2017-01-25 7 views
0

My DB выглядит, как это и представляет собой покупку, сделанное заказчиком на определенном магазине:сосчитать, сколько записей было в каждой группе в улье

Customer ID | Store ID | Date & Time 
1 | 1884 | 2016-10-30 13:00:00 
5 | 2001 | 2016-10-30 13:00:00 

Набор данных очень велик. Время разнесено на 1 час.

Мне нужно подсчитать, сколько клиентов совершили покупку в течение каждого часа дня. Возвращенные данные должны выглядеть так:

Store ID | Unique Date & Time | Number of purchases 
1884 | 2016-10-30 13:00:00 | 8 
1884 | 2016-10-30 14:00:00 | 12 

У меня нет идей и я буду благодарен за любую помощь, которую я могу получить.

ответ

1

Выберите идентификатор и сгруппируйте его по часам и дням.

SELECT [ Store ID ], count(*) 
FROM table1 
GROUP BY DATEPART(day, [ Date & Time]), DATEPART(hour, [ Date & Time]); 
0

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

Ниже запроса даст вам кол-покупок, сделанных заказчиком в частности хранить в [Дата и время]

select [Date and Time],[Store ID],count(customer id) 
from [tablename] group by [Date and Time],[Store ID] 
order by [Date and Time] DESC 

, если вы хотите, чтобы получить полное количество всех покупок в час независимо от того, идентификатор магазина, то вы можете попробовать это:

select [Date and Time],count(customer id) 
from [tablename] group by [Date and Time] 
order by [Date and Time] DESC 

упорядочить по алфавиту используется, чтобы получить последние результаты временной метки на верхней

+0

это может столкнуться с проблемой с минутами и так секунд значение полосы в день и час, чтобы избежать проблем. –

+0

По-прежнему не повезло, этот код возвращает счет для всех магазинов. Другими словами, он не сбрасывается при изменении идентификатора магазина. – saucypigeon

+0

@promashk, вы можете добавить предложение where в конце первого запроса, упомянутого выше, которое ограничивает время до предыдущего часа. Теперь этот запрос должен запускаться каждый час дня, выход которого должен быть вставлен в таблицу say x. Теперь, когда вы запрашиваете данные из x на днях, ограничьте его только данными предыдущих дней. [Http://stackoverflow.com/questions/34757504/hive-how-to-calculate-time-difference] – kirtan

 Смежные вопросы

  • Нет связанных вопросов^_^