SQL — запрос — возвращает новую таблицу после подсчета количества строк на дату

#sql #database #tsql

Вопрос:

Я выполнил запрос, используя предложение join, которое генерирует таблицу следующим образом:

 Name, Colour, Date
John, Blue, 01/01/2021
Betty, Green, 01/01/2021
Bob, Blue, 01/01/2021 
Mark, Green, 03/02/2021
Jane, Red, 03/02/2021
 

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

 Colour, ColourTotal, Date
Blue, 2, 01/01/2021
Green, 1, 01/01/2021
Green, 1, 03/02/2021
Red, 1, 03/02/2021
 

Я не могу этого понять. Когда я пытаюсь вложить запросы SELECT, я продолжаю получать сообщение об ошибке агрегирования. У меня нет опыта работы с SQL, поэтому я был бы признателен за любую помощь.

Комментарии:

1. Подсказка: GROUP BY .

2. Можете ли вы поделиться своим первоначальным запросом? это было бы полезно, чтобы дать вам более точное предложение.

Ответ №1:

Вы должны агрегировать только по внешнему запросу, как это:

 SELECT Colour, Date, COUNT(*) AS ColourTotal
FROM 
   ( 
      SELECT ... 
   ) AS ColoursPerDate
GROUP BY Colour, Date
 

Комментарии:

1. Потрясающе! Спасибо.

Ответ №2:

 SELECT color,
   date,
   Count(*) AS colorTotal
FROM   table
GROUP  BY color,
      date