Sql группировка на утро, день, вечер
Всем привет! Есть таблица с колонками - Transaction_id, Amount, Time, Shop_id То есть номер транзакции, кол-во товара , время покупки и айди магазина, в котором была совершена покупка Нужно написать запрос, который считает кол-во покупок, сделанных в каждом магазине,а также сгруппированных по времени покупки (утро, день, вечер).
Возникла сложность именно с группировкой
Ответы (1 шт):
Вы дали довольно мало информации по своему вопросу и не указали хотя бы примерные записи, которые хранятся в таблице, поэтому постараюсь ответить на основе того, что есть, с учётом некоторых допущений.
Для начала обозначу предполагаемые типы данных для тех столбцов, которые вы указали:
Transaction_id - int, Amount - int, Time - interval, Shop_id - int.
Далее предположу, что утро, день, вечер это то время, когда магазин работает. Ночью он, вероятно, не работает, тогда обозначу время работы магазина с 8:00 до 20:00.
Далее, вы так же не указали примерный желаемый результат, поэтому напишу запрос, который даёт результат так, как его вижу я:
SELECT Shop_id,
Sum (Case
When Time between 08:00:00 and 12:00:00 then Amount
Else 0
End) as Utro
Sum (Case
When Time between 12:00:00 and 16:00:00 then Amount
Else 0
End) as Den
Sum (Case
When Time between 16:00:00 and 20:00:00 then Amount
Else 0
End) as Vecher
From Table_name --Подставьте сюда название вашей таблицы
Group by Shop_id
Order by Shop_id
По идее, если я примерно правильно предположил идею вашего запроса, вы получите желаемый результат, где будет выведен примерно следующий ответ:
| Shop_id | Utro | Den | Vecher |
|---|---|---|---|
| 1 | 5 | 3 | 4 |
| 2 | 6 | 1 | 8 |
| 3 | 8 | 4 | 3 |
| 4 | 8 | 1 | 5 |
| 5 | 7 | 0 | 2 |
| 6 | 4 | 6 | 9 |
Это список идентификаторов магазинов к каждому из которых указано количество проданных товаров с разделением на утро, день и вечер.
Если вам надо не количество проданных товаров, а количество транзакций в каждом магазине, можете заменить в запросе Amount на Transaction_id и вместо SUM указать COUNT.