SQL多日期分数求和排序 如何设置仅取单日期值的第二排序规则
错误修复与实现方案
- 原SQL第一个问题:
WHERE条件逻辑错误,同一行数据的planning_date不可能同时等于两个不同日期,需要改用IN匹配两个目标日期 - 原SQL第二个问题:缺少分组逻辑,不加
GROUP BY直接聚合只会返回全表唯一的求和结果,不存在排序意义,需要替换示例中的分组字段为你实际要聚合的维度(比如用户ID、项目ID等)
核心通过CASE WHEN条件聚合实现指定日期的分数提取,作为第二排序条件,参考实现如下:
SELECT 分组字段, -- 替换为实际聚合维度,例如user_id、project_id SUM(score) AS total_score FROM TABLE1 WHERE planning_date IN ('2021/09/15', '2021/09/16') GROUP BY 分组字段 ORDER BY total_score ASC, SUM(CASE WHEN planning_date = '2021/09/16' THEN score ELSE 0 END) ASC;
如果指定日期不存在对应分组的记录,CASE WHEN会返回0作为第二排序的判断值,如果你需要这类数据排在更靠后的位置,可以把ELSE 0调整为你需要的默认值,第二排序的升降序也可以根据需求替换ASC为DESC。
内容的提问来源于stack exchange,提问作者RandomFellow
相关产品推荐
相关产品推荐

