Группировка SQL через отметку времени дала неожиданные результаты - PullRequest
0 голосов
/ 01 мая 2018

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

SELECT created_at as created_at, SUM(quantity) as product_sales
FROM sales_products
WHERE created_at > '2018-04-19'
GROUP BY created_at
ORDER BY created_at DESC
LIMIT 100;

И вывод:

"created_at"    "product_sales"
"2018-05-01 09:41:51"   "110"
"2018-05-01 09:41:11"   "150"
"2018-05-01 09:40:57"   "120"
"2018-04-29 16:25:50"   "12"
"2018-04-25 11:54:26"   "2385"
"2018-04-24 11:54:26"   "2485"
"2018-04-23 11:54:26"   "2278"
"2018-04-22 11:54:26"   "2277"
"2018-04-21 11:54:26"   "2330"
"2018-04-20 11:54:26"   "2408"
"2018-04-19 11:54:26"   "2425"

Теперь до сегодняшнего дня, когда я вставил больше значений, сумма прошла так, как я планировал. Но записи с немного другой меткой времени не группируются. Я также попытался использовать LEFT (созданный_ 10, чтобы выбрать только часть даты), но это не сработало.

Есть идеи?

Большое спасибо заранее!

SELECT LEFT(created_at, 10) as created, SUM(quantity) as product_sales
FROM sales_products
WHERE created_at > '2018-04-19'
GROUP BY created_at
ORDER BY created_at DESC
LIMIT 100;

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Это должно помочь:

select cast(created_at as date) as Day, sum(quantity) as product_sales 
from sales_products
where created_at > '2018-04-19'
group by Day
order by Day desc
limit 100
0 голосов
/ 01 мая 2018

Для группировки по дням используйте group by date(created_at):

select date(created_at) as day, sum(quantity) as product_sales 
from sales_products
where created_at > '2018-04-19'
group by day
order by day desc
limit 100

Функция date извлекает день из выражения и отбрасывает время дня, которое может варьироваться в зависимости от ваших записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...