Требуется помощь SQL Group By и AGGREGATE

У меня два стола...

  • Заказы(номер заказа,дата заказа,дата доставки,дата требования,статус,номер клиента) и
  • OrderDetails(orderNumber,productCode,quantityOrdered,priceEach,orderLineNumber)

Я пытаюсь вернуть такой запрос...

+----------------------------------+--------------------+
| DATEDIFF(shippedDate, orderDate) | COUNT(shippedDate) |
+----------------------------------+--------------------+
|                                1 |                 50 |
|                                2 |                 49 |
|                                3 |                 52 |
|                                4 |                 52 |
|                                5 |                 59 |
|                                6 |                 45 |
|                                7 |                  2 |
|                                8 |                  2 |
|                               65 |                  1 |
+----------------------------------+--------------------+

но я просто не понимаю. Я знаю, что мне нужно создать группу и использовать DateDiff() и Count()...

Я пробовал это, но это не правильно mysql:

select DATEDIFF(shippedDate,orderDate), COUNT(shippedDate) from Orders Group by shippedDate;

какие-либо предложения?


person CoderRightInTheProgram    schedule 14.06.2014    source источник
comment
Удален тег SQL Server, поскольку в вопросе явно указано mysql.   -  person Gordon Linoff    schedule 14.06.2014


Ответы (2)


Вам нужно group by datediff():

select DATEDIFF(shippedDate, orderDate), COUNT(shippedDate)
from Orders
Group by DATEDIFF(shippedDate, orderDate);
person Gordon Linoff    schedule 14.06.2014
comment
Спасибо! Что делать, если я хочу удалить значение NULL? - person CoderRightInTheProgram; 14.06.2014
comment
@dognose . . . (1) Тег SQL часто используется в сочетании с другими базами данных. Его цель, кажется, состоит в том, чтобы расширить аудиторию. (2) Это не будет работать в SQL Server, потому что datediff() принимает три аргумента в SQL Server. (3) Я не уверен, что вы говорите. С третьим аргументом datediff() это будет работать в SQL Server. - person Gordon Linoff; 14.06.2014
comment
@user3740517 . . . Вы бы добавили что-то вроде where shippedDate is not null and orderDate is not null или, возможно, заменили значение NULL на now(), используя coalesce(). - person Gordon Linoff; 14.06.2014
comment
Отлично работает с WHERE...IS NOT NULL. Спасибо еще раз! - person CoderRightInTheProgram; 14.06.2014

Вам нужно добавить datediff(shippedDate,orderDate) в группу по оператору вместо ShipDate

person Vladimir Semashkin    schedule 14.06.2014