如何使用Window Function实现同VAR同Group不同SalesPrice的标记需求?
解决方案:标记同VAR同组下价格不一致的记录
可以通过窗口函数结合CASE WHEN语句实现需求,以下提供两种常用写法:
方法1:对比分组内最小/最大价格
通过窗口函数获取每个VAR+Group分组内的最小和最大SalesPrice,当两者不相等时标记为need to define:
SELECT VAR, `Group`, SalesPrice, CASE WHEN MIN(SalesPrice) OVER (PARTITION BY VAR, `Group`) <> MAX(SalesPrice) OVER (PARTITION BY VAR, `Group`) THEN 'need to define' ELSE NULL -- 可替换为你需要的默认值,比如空字符串 END AS Status FROM your_table_name;
方法2:统计分组内不同价格的数量
统计每个VAR+Group分组内不同SalesPrice的数量,当数量大于1时标记:
SELECT VAR, `Group`, SalesPrice, CASE WHEN COUNT(DISTINCT SalesPrice) OVER (PARTITION BY VAR, `Group`) > 1 THEN 'need to define' ELSE NULL END AS Status FROM your_table_name;
注意事项
Group是SQL保留关键字,查询时需要用反引号(MySQL)或方括号(SQL Server)包裹,避免语法报错- 替换
your_table_name为实际的表名
内容的提问来源于stack exchange,提问作者RebeccaJohnson
相关产品推荐
相关产品推荐

