2013-04-17 2 views
2

У меня есть данные о продажах, хранящиеся в базе данных. Поле sales_date содержит дату продажи. Я хочу, чтобы эти данные были сгруппированы по месяцам, так что я получу агрегированные данные за январь, февраль и т. Д. Есть ли способ сделать это без необходимости извлекать все данные, а затем делать это вручную?Получение месяца из поля даты - KDB

ответ

2

Что-то вроде следующего должно работать. Если данные разделены на диск, не забудьте включить раздел в предложение where.

q)tbl:([]dt:20?(2013.01.01;2013.02.01;2013.01.03);sales:20?100000) 
q)select sum sales by `month$dt from tbl 
dt  | sales 
-------| ------ 
2013.01| 701075 
2013.02| 298200 
q)select avg sales by `month$dt from tbl 
dt  | sales 
-------| -------- 
2013.01| 50076.79 
2013.02| 49700 
+0

Спасибо, выше работал отлично. Также просто делать select Sales: суммарные продажи по salesdate.month из таблицы также работали для меня. – Mancunia89

1

Вы также можете использовать более простую форму:

q)t:([] date:10?.z.Z)                 
q)select date.month from t                
month 
------- 
2013.10 
2013.08 
2004.09 
2010.03 
...