我有一个包含用户的表...某种方式的用户被加倍(有多个记录)。我希望通过电子邮件地址清楚地提取每个用户记录,对于拥有多个记录的用户,我只想提取登录次数最多的记录。
--USERS----------------------------
ID EMAIL TOTAL_LOGINS
1 blah@blah.com 3
2 blah@blah.com 1
3 bloop@blah.com 1
4 bloop@blah.com 45
5 blarp@blah.com 6
6 flag@blah.com 2
我希望返回的查询是:
ID EMAIL TOTAL_LOGINS
1 blah@blah.com 3
4 bloop@blah.com 45
5 blarp@blah.com 6
6 flag@blah.com 2
有人可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:5)
SELECT EMAIL, MAX(TOTAL_LOGINS)
FROM USERS
GROUP BY EMAIL
修改强>
这将在MS SQL中执行您想要的操作。
SELECT * -- Bad practice. I'm just showing that you can select anything.
FROM USERS
WHERE ID = (SELECT TOP 1 ID
FROM USERS u
WHERE u.EMAIL = USERS.EMAIL
ORDER BY TOTAL_LOGINS DESC)
答案 1 :(得分:4)
;WITH CTE AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY EMAIL ORDER BY TOTAL_LOGINS DESC) Corr
FROM USERS
)
SELECT ID, EMAIL, TOTAL_LOGINS
FROM CTE
WHERE Corr = 1
答案 2 :(得分:1)
select * from users where email = '[...]' order by total_logins desc limit 1;
我猜你的解决方案看起来很相似。