Nano Hash - криптовалюты, майнинг, программирование

MySQL - разделение данных в 1 столбце на 3 отдельных столбца для отчета

У нас есть отчет, чтобы отслеживать, сколько правок вносят наши торговые представители. Текущий запрос для получения количества правок на всех трех страницах приведен ниже. Раньше нам было все равно, на какой странице они вносят изменения, но теперь мы хотим видеть, на каких страницах они вносят эти изменения.

Мы хотим иметь 3 разных столбца: bhns, hns, chns, отображаться в отчете, и нам нужно изменить этот запрос, чтобы показать разные столбцы. Итак, разделите 1 столбец (customer_edits) на 3 столбца на странице.

SELECT
  count( `database2`.`sales_edits`.`id` ) AS `customer_edits`,
  `database2`.`sales_edits`.`rep` AS `rep`

FROM
  `database2`.`sales_edits` 
WHERE
  ((
      cast( `database2`.`sales_edits`.`date` AS date ) = curdate()) 
    AND ((
        `database2`.`sales_edits`.`page` = 'chs' 
        ) 
      OR ( `database2`.`sales_edits`.`page` = 'chns' ) 
    OR ( `database2`.`sales_edits`.`page` = 'bhns' ))) 
GROUP BY
  `database2`.`sales_edits`.`rep` 

таблица продаж_изменить:

sales_edit таблица


Ответы:


1

Похоже, вам нужна условная агрегация:

select
    rep,
    sum(page = 'chs')  customer_edits_chs,
    sum(page = 'chns') customer_edits_chns,
    sum(page = 'bhns') customer_edits_bhns
from database2.sales_edits 
where date = current_date and page in ('chs', 'chns', 'bhns')
group by rep

Ваш исходный код выглядит более сложным, чем нужно:

  • не нужно префиксировать все столбцы с именем схемы и таблицы - в игру вступает одна таблица в любом случае (и если у вас их больше одной, то вы должны использовать псевдонимы таблиц для сокращения кода)

  • приведение даты кажется ненужным; MySQL с радостью понимает любую строку в формате 'yyyy-mm-dd' как дату

  • повторяющиеся условия or можно сократить с помощью in

  • пожалуй, не нужно все идентификаторы обрамлять обратными кавычками, пока они не содержат спецсимволов

06.05.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..