Mysql查询找到每天至少提交1次提交的黑客

时间:2016-06-26 05:53:14

标签: mysql

我想找到所有每天至少提交一次的黑客。

表格如下:id,date。

1, 2016-01-01
2, 2016-01-01
3, 2016-01-01
1, 2016-01-02
2, 2016-01-02
1, 2016-01-03

所以输出应该是: 1 由于1已全天提交。

我试过的是:

Select id from table 
group by id
having count(*)=3 /* Since number of days are 3 */

然而这是不正确的,因为黑客可以在一天内进行多次提交。 我的查询失败的示例:

1, 2016-01-01
2, 2016-01-01
3, 2016-01-01
3, 2016-01-01
3, 2016-01-01
1, 2016-01-02
2, 2016-01-02
1, 2016-01-03

解决这个问题后,最初的问题是:

编写一个查询,以打印每天至少提交的唯一黑客的总数(从比赛的第一天开始),并找到每天提交最大数量的黑客的hacker_id和名称。如果不止一个这样的黑客拥有最大提交数量,请打印最低的hacker_id。查询应该在比赛的每一天打印此信息,按日期排序

2 个答案:

答案 0 :(得分:2)

我相信,如果您按iddate分组,您将获得所需内容。即:

SELECT id
FROM table 
GROUP BY id, `date`
HAVING COUNT(*) = 3 /* Since number of days are 3 */

请注意,这假设您根据其他地方的某个日期范围获得天数(在这种情况下为3天)。

答案 1 :(得分:0)

我会这样说:

select id
from t
group by id
having count(distinct date) = (select count(distinct date) from t);