编写一个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
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