![](/img/trans.png)
[英]SQL: Get week range (week 1-2 or week 1, 2) for each week where item has the most sales out of items list
[英]SQL: How to combine values in column week (i.e. week 1, week 2, etc) into week range (week 1-2 or week 1, 2)?
一般SQL问题使用在线SQLite编辑,如果我有下表:
物品 | 星期 | 销售量 |
---|---|---|
item1 | 1个 | 35 |
项目2 | 1个 | 25 |
项目3 | 1个 | 24 |
item1 | 2个 | 35 |
项目2 | 2个 | 34 |
item1 | 3个 | 24 |
项目2 | 3个 | 45 |
item1 | 4个 | 44 |
项目2 | 4个 | 51 |
item1 | 5个 | 1个 |
项目3 | 5个 | 100 |
我怎样才能让 output 变成这样:
物品 | 周 | 总销售额 |
---|---|---|
item1 | 1-2 | 70 |
项目2 | 3-4 | 96 |
项目3 | 5个 | 100 |
更具体地说,我将如何(如果可能的话)将周显示为一个范围(“第 1-2 周”或什至“第 1、2 周”),而不仅仅是“第 1 周”,其中范围是周该商品每周销量最高?
我一直在研究的一些代码如下:
SELECT item,
SUM(sales) OVER (
PARTITION BY week order by item) AS total_sales
FROM TABLE1
GROUP BY item;
上面的代码让我得到了一周的总销售额或总销售额,但我完全不知道如何将一周作为一个范围。
任何帮助或澄清表示赞赏。 示例代码
您可以使用CASE
表达式通过该表达式和item
创建范围和分组:
SELECT item,
CASE
WHEN week <= 2 THEN '1-2'
WHEN week <= 4 THEN '3-4'
WHEN week <= 5 THEN '5'
ELSE '>5'
END weeks,
SUM(sales) total_sales
FROM table1
GROUP BY item, weeks;
请参阅演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.