繁体   English   中英

SQL:如何将列周(即第 1 周、第 2 周等)中的值组合到周范围(第 1-2 周或第 1、2 周)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM