MySQL查询使用count()和if / case

时间:2014-01-02 18:16:40

标签: mysql

我需要找到当天填写调查问卷的用户数。

这些是总计数,我需要每天计数。以下是数据库的图片:http://www.upload.ee/image/3800828/pildike.png

SELECT DISTINCT USER_ID, COUNT(ANSWER_TIME) AS ARV FROM RESULT WHERE ANSWER_TIME IS NOT NULL GROUP BY USER_ID ORDER BY ARV DESC;
  1. 例如,这给了我:
    • 32 2142
    • 143 1098
    • 26 979
    • 76 878
  2. 但我需要不同的行,answer_day_of_week是1到7,具体取决于日期,answer_time是TIMESTAMP。统计数据已经持续了97天,例如32人已经在97天内完成了2000多次,但我只需要算一次......

    我想过使用if-elseif或while或case或某种子查询?我尝试了一些问题,但我总是失败......

    例如,有一天我可以在1. oct上从一个人获得15行,但在2. oct上有0行,然后它给出了他已经填写调查一次的答案。

2 个答案:

答案 0 :(得分:0)

只需更改您的SQL查询:

  

SELECT DISTINCT USER_ID,COUNT(ANSWER_TIME)AS ARV from RESULT WHERE DATE(ANSWER_TIME)> = DATE_SUB(CURDATE(),INTERVAL' 97 DAYS')GROUP BY USER_ID ORDER by ARV DESC;

答案 1 :(得分:0)

SELECT USER_ID, COUNT(ARV) AS ARV
        FROM
        (
            SELECT DISTINCT USER_ID, DATE(ANSWER_TIME) AS ARV FROM RESULT WHERE ANSWER_TIME IS NOT NULL 
        ) A
        GROUP BY USER_ID ORDER BY ARV DESC;

请尝试以上查询