我有一张销售产品的表格。 销售额是每天。像
product date sales
1 '2013-11-01' 100
1 '2013-11-02' 423
1 '2013-11-03' 700
1 '2013-11-04' 233
2 '2013-11-01' 623
2 '2013-11-02' 451
2 '2013-11-03' 9000
我希望得到一个查询,它会显示每周销售总额 如下所示:
product week ending sales
1 '2013-11-01' 10000
1 '2013-11-08' 15000
2 '2013-11-01' 4900
2 '2013-11-08' 30000
在总结时,我不确定如何得到每周的小组。
我正在使用teradata
答案 0 :(得分:3)
如果您使用的是Teradata 14,则可以利用数据库DayNumber_Of_Week()
中的TD_SYSFNLIB
功能:
SELECT s.Product
, s.Date + (7-DayNumber_Of_Week(s.date)) AS WeekEndingDate /* Saturday */
, SUM(s.Sales) AS Sales
FROM sales AS S
GROUP BY 1,2;
这也适用于Teradata 13.10。
使用Sys_Calendar:
SELECT s.Product
, s.DATE + (7-c.Day_Of_Week) AS WeekEndingDate /* Saturday */
, SUM(s.Sales) AS Sales
FROM sales AS S
INNER JOIN
Sys_Calendar.Calendar c
ON S.date = c.calendar_date
GROUP BY 1,2;
答案 1 :(得分:1)
我对TERADATA知之甚少,但我相信你可以利用sys_calendar.calendar
表,例如:
SELECT s.Product, c.week_of_year, SUM(s.sales) AS Sales
FROM sales AS s
JOIN sys_calendar.calendar as C
ON s.date = c.date
你也需要那里的年份,以便不将2013年第1周与2012年第1周分组。