Mysql 获取过去三年内发出请求的所有用户
我想获得过去三年中所有提出请求的用户列表 请求(请求id、请求日期、用户id、用户配置文件id) 我做得对吗Mysql 获取过去三年内发出请求的所有用户,mysql,sql,postgresql,group-by,Mysql,Sql,Postgresql,Group By,我想获得过去三年中所有提出请求的用户列表 请求(请求id、请求日期、用户id、用户配置文件id) 我做得对吗 SELECT user_id FROM requests WHERE EXTRACT(YEAR FROM request_day) IN ( 2014,2015,2016 ) GROUP BY user_id HAVING COUNT(*) = 3; 你目前的方法几乎是正确的。你所需要做的就是按不同的年数计算: SELECT user_id FROM requests WHERE
SELECT user_id
FROM requests
WHERE EXTRACT(YEAR FROM request_day) IN ( 2014,2015,2016 )
GROUP BY user_id
HAVING COUNT(*) = 3;
你目前的方法几乎是正确的。你所需要做的就是按不同的年数计算:
SELECT user_id
FROM requests
WHERE YEAR(request_day) IN (2014, 2015, 2016)
GROUP BY user_id
HAVING COUNT(DISTINCT YEAR(request_day)) = 3;
如果DISTINCT
年数为3,则表示用户在WHERE in
子句中拥有所有三年
请注意,另一种方法是条件聚合:
SELECT user_id
FROM requests
GROUP BY user_id
HAVING SUM(CASE WHEN YEAR(request_day) = 2014 THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN YEAR(request_day) = 2015 THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN YEAR(request_day) = 2016 THEN 1 ELSE 0 END) > 0
如果您的查询变得更复杂,这种方法可以更好地扩展。我不知道,您做得对吗?谢谢您的解决方案。。。我喜欢第二个!!:)