You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL中使用DISTINCT、CAST与GROUP BY去重FeedbackDT失败求助

解决FeedbackDT列DISTINCT去重及分组统计问题

我来帮你排查下问题所在~你的查询之所以达不到按日期去重统计的效果,核心问题出在GROUP BY的粒度不对,以及子查询里的DISTINCT用法有误。

问题分析

你当前的SQL里,GROUP BY (feedbackDateTime)是按完整的日期时间(包含时分秒)进行分组的,这意味着哪怕是同一天的不同时间点,都会被分成不同的组。而你在子查询里写的SELECT DISTINCT CAST(feedbackDateTime AS DATE)其实起不到去重作用——因为每个分组本身对应的就是唯一的feedbackDateTime,转成日期后每个分组的结果都是单个值,DISTINCT在这里毫无意义。

正确的查询写法

要实现按日期去重,并统计每天的反馈数量,你需要先把feedbackDateTime转换为日期类型,再按这个日期分组,同时统计该日期下的FeedbackID数量:

SELECT 
    CAST(feedbackDateTime AS DATE) as FeedbackDT,
    COUNT(FeedbackID) as FeedbackCount
FROM Feedback 
WHERE feedbackDateTime <= GETDATE() 
GROUP BY CAST(feedbackDateTime AS DATE)

补充说明

  • 这里直接把CAST(feedbackDateTime AS DATE)作为分组依据,确保同一天的所有记录都会被归为一组,自然就实现了日期的去重。
  • COUNT(FeedbackID)会统计每组(即每天)的反馈ID数量,如果FeedbackID不会为空,用COUNT(*)也可以达到同样效果。

内容的提问来源于stack exchange,提问作者domster

火山引擎 最新活动