编写一个mysql查询以计数唯一(重复)

编写一个mysql查询以计数唯一(重复),mysql,Mysql,学生表名 +------------+--------------+-------------------------------+-----------+ | randomno | student_name | created_on | hash_value| +------------+--------------+-------------------------------+-----------+ | 1 | Michael

学生表名

+------------+--------------+-------------------------------+-----------+
|   randomno | student_name | created_on                    | hash_value|
+------------+--------------+-------------------------------+-----------+
|          1 | Michael      |   Decemeber 19,2019,01:27 AM  | CS110     |
|          4 | Doug         |   Decemeber 19,2019,10:17 PM  | CS107     |
|          8 | Pete         |   Decemeber 19,2019,10:37 AM  | CS220     |
|          2 | Michael      |   Decemeber 18,2019,09:30 AM  | CS110     |
|         13 | Arnold       |   Decemeber 19,2019,10:37 AM  | CS110     |
|         14 | Michael      |   Decemeber 19,2019,10:57 AM  | CS910     |
|         15 | Michael      |   Decemeber 19,2019,08:30 AM  | CS910     |
|          9 | Ralph        |   Decemeber 18,2019,07:31 AM  | CS110     |
|          3 | Michael      |   Decemeber 17,2019,06:32 AM  | CS110     |
|          5 | Doug         |   Decemeber 17,2019,05:33 AM  | CS107     |
|         10 | Ralph        |   Decemeber 17,2019,04:39 AM  | CS210     |
|          6 | Samantha     |   Decemeber 16,2019,06:07 AM  | CS110     |
|          7 | Samantha     |   Decemeber 16,2019,09:17 AM  | CS110     |
|         11 | Ralph        |   Decemeber 16,2019,05:27 AM  | CS210     |
|         12 | Ralph        |   Decemeber 15,2019,04:37 AM  | CS220     |
每个学生的hash_值都是相同的,Michael有CS110

>P>我想根据学生简介按日期分组:如果学生HASHY值计数大于<>代码<1/代码>(重复),学生只需考虑

  • 基本上每天我都需要得到学生姓名级别上重复的数字。EX:米迦勒在12月19日有3个HASHY值,必须考虑1,并映射到12月17日,因为拉尔夫已经在DECEMEBER 17

  • 伪查询

    select date(created_on) as dt, count(hash_value) from sudents
    where hash_value is not null group by 1 having count(hash_value) > 1) order by dt desc 
    
    我正在做
    date(created_on)
    ,因为这样就可以了

    输出列>
    日期和计数(唯一重复项)

    期望结果

    December 15,2019  1(Ralph)
    December 16,2019  1(Samantha)
    December 17,2019  1(Micheael),1(Dough)
    December 18,2019  1(Ralph)
    
    出去


    我的想法是,找到count大于1(count(hash\u value)>1)的hash\u值,然后(聚合到)按日期的第一次出现分组

    从获取每个学生的第一个日期的子查询开始

    然后将其包装到按日期分组的行计数查询中

    SELECT DATE(created_on) AS date, COUNT(*) AS count
    FROM (
        SELECT MIN(created_on) AS created_on
        FROM students
        GROUP BY student_name
    ) AS x
    GROUP BY date
    

    我看不出
    散列值是如何相关的。

    我不理解这个问题。你能显示想要的结果吗?如果你想按学生计数,那么你需要
    GROUP by dt,student_name
    添加结果@barmar为什么拉尔夫没有在12月17日计数?为什么12月19日的ouptut中没有任何内容?
    SELECT DATE(created_on) AS date, COUNT(*) AS count
    FROM (
        SELECT MIN(created_on) AS created_on
        FROM students
        GROUP BY student_name
    ) AS x
    GROUP BY date