Составление запроса с подсчетом в Mysql

304
14 июня 2017, 01:27

Я в работе с базами новичек и вот с чем не могу разобраться. Есть вот такая таблица

idCake - это id тортика, который был продан. Мне нужно посчитать, сколько тортов с id = 2 было продано в этом месяце, а сколько в предыдущем.

То есть мне нужно составить массив примерно такого вида:

[
 {
  id: 5, // id тортика 
  date: [40, 39, 10, 40, 39, 80, 40] // массив продаж по месяцам, то есть за янв. продано 40 шт., февраль 39 шт., март 10 и тд
 }
]

Возможно сделать такое сложение запросом к базе или нужно сделать несколько простых запросов и складывать уже на бэке или фронте?

Answer 1

Можно одним запросом к базе:

SELECT idCake, MONTH(Data), COUNT(idOrders)
FROM YourTable
WHERE idCake = 2
GROUP BY idCake, MONTH(Data)

MONTH() - получает месяц из даты (если нужно название месяца, то - MONTHNAME());
COUNT() - считает количество заказов. Так как эта функция агрегирующая, необходима группировка;
GROUP BY - группируем сначала по idCake, потом по месяцу;

Если нужно посчитать для всех типов тортов, то нужно убрать строку WHERE idCake = 2.

READ ALSO
Не понимаю где я ошибся в задании на HashMap

Не понимаю где я ошибся в задании на HashMap

Написал код, вроде рабочий, но не принимает проверка JavaRush, в итоге переделал элегантно и правильно, но не могу понять ГДЕ ошибкаВроде же всё...

262
Обновление компонентов Swing

Обновление компонентов Swing

Имею класс, унаследованный от JFrame:

613
Объединение и сортировка в SQLite

Объединение и сортировка в SQLite

Есть запрос на получение данных с джойном многих таблицНеобходимо отсортировать товары по приоритету поле int Но не у каждого товара есть...

274
Java и USB передача данных - Java SE

Java и USB передача данных - Java SE

Нужно сделать приложениеЕго суть такова: Есть микроконтроллер (TTL) - он подключается через USB к ПК

371