我有一个数据集,每天重复和显示销售。如果一个产品在第一天发布,销量在1-5之间,如果第二天的销量在10-50之间,我想把它归类为“限量销售”
如果一个产品在第一天发布并且有超过1000个销售,如果在第二天它有超过1000个销售,我想把它归类为“广泛销售”
如何在标准sql中执行此操作?
我尝试过使用case-when时使用一些变通方法,但最终会遇到问题,因为虽然我可以用输出对第1列进行分类,但我无法使第2列的输出也基于第1列的输出(例如,第1列为true,但第2列为false)。我需要的是列1=true和列2=true。
下面是示例查询的外观:
表如下所示:
列:名称、天数、销售额
1. Jack | 1 | 5
2. Jack | 2 | 10
3. Mary | 1 | 1250
4. Mary | 2 | 1500
SELECT name,
day_number,
sales,
CASE
WHEN day_number = 1
AND sales >= 1
AND sales <= 5
THEN "LIMITED SALES"
ELSE "WIDE SALES"
END AS status_1,
CASE
WHEN day_number = 2
AND sales >= 10
AND sales <= 50
THEN TRUE
ELSE FALSE
END AS status_2
FROM table
不幸的是,这并不能真正让我得到我想要的。最后,我希望看到这样的结果:
1. Jack | 1 | 5 | LIMITED SALES
2. Jack | 2 | 10 | LIMITED SALES
3. Mary | 1 | 1250 | WIDE SALES
4. Mary | 2 | 1500 | WIDE SALES
1条答案
按热度按时间uxhixvfz1#
这就是你想要的吗?
如果您想在每一个原始行上都这样做,那么可以使用窗口函数或
join
.