【问题标题】:SQL Distinct Count from a certain date range?某个日期范围内的 SQL 不同计数?
【发布时间】:2013-12-04 10:59:20
【问题描述】:

已经为我的表设置了一个查询,我想在其中显示在前几周内留下的某些反应,这在我写作时效果很好

SELECT * 
FROM reactiondata 
WHERE reaction_time > DATE_SUB(NOW(), INTERVAL 1 WEEK) 
ORDER BY reaction_time ASC;

此查询还会选择唯一的促销 ID 字段和不同的用户名,这样您就可以看到有多少唯一的用户名发送到了哪个促销 ID。

SELECT 
   reaction_promoID, 
   COUNT( DISTINCT reaction_username) AS reaction_username  
FROM reactiondata GROUP BY reaction_promoID

但是,我希望第二个查询在上周的日期范围内工作,就像第一个查询一样。当我将 Where 等添加到查询中时,它不起作用。

任何帮助都非常受欢迎!

A+TS

【问题讨论】:

    标签: mysql sql count


    【解决方案1】:
    SELECT reaction_promoID, COUNT( DISTINCT reaction_username) AS reaction_username  
    FROM reactiondata 
    WHERE reaction_time > DATE_SUB(NOW(), INTERVAL 1 WEEK)
    GROUP BY reaction_promoID
    

    【讨论】:

    • 完美运行,谢谢!不让我出于某种原因接受你的回答!
    • @user3065453:您可以在提问 15 分钟后接受答案,而不是之前。
    【解决方案2】:

    我认为现在是 HAVING 子句的时候了:

    http://www.w3schools.com/sql/sql_having.asp

    SELECT reaction_promoID, COUNT( DISTINCT reaction_username) AS reaction_username  
    FROM reactiondata 
    GROUP BY reaction_promoID
    HAVING  reaction_time > DATE_SUB(NOW(), INTERVAL 1 WEEK)
    

    【讨论】:

    • 听起来很棒,但遗憾的是,当它肯定存在于表中时,它出现了未知列“reaction_time”。
    • 啊,可能是您必须在您选择的列列表中包含反应时间。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多