如何用SQL判断分组内指定列的单元格是否存在不匹配情况
同一分组内列值是否存在不匹配的SQL实现
要判断Dashboard_Widget_Id分组内的Position列是否存在不匹配值,可通过以下几种方式实现:
方式一:统计不重复值数量
通过COUNT(DISTINCT Position)统计分组内唯一Position的数量,若数量大于1则说明存在不同值:
SELECT Dashboard_Widget_Id, CASE WHEN COUNT(DISTINCT Position) > 1 THEN 1 ELSE 0 END AS Is_Different FROM toolbox.Dashboard_Widget_Sizes GROUP BY Dashboard_Widget_Id
方式二:比较最大值与最小值
若分组内Position的最大值和最小值不相等,说明存在不同值:
SELECT Dashboard_Widget_Id, CASE WHEN MAX(Position) != MIN(Position) THEN 1 ELSE 0 END AS Is_Different FROM toolbox.Dashboard_Widget_Sizes GROUP BY Dashboard_Widget_Id
处理NULL值的情况
如果Position列存在NULL值,可使用COALESCE将NULL转换为特定值(比如空字符串),避免NULL被忽略导致统计偏差:
SELECT Dashboard_Widget_Id, CASE WHEN COUNT(DISTINCT COALESCE(Position, '')) > 1 THEN 1 ELSE 0 END AS Is_Different FROM toolbox.Dashboard_Widget_Sizes GROUP BY Dashboard_Widget_Id
内容的提问来源于stack exchange,提问作者ToMakPo
相关产品推荐
相关产品推荐

