下图是我必须使用的数据库示例。
数据库还有更多字段 - userid直到USER-0050
我想要实现的是十大用户活动。根据上面的图像,所需的输出是:
User ID Transaction
USER-005 14
USER-001 12
USER-002 12
USER-003 8
USER-004 6
到目前为止我尝试过:
SELECT DISTINCT (userid), count(TCODE) as Transaction
FROM SAP_SECURITY_LOG
GROUP BY TCODE, USERID
然而,我的输出并不是我想要达到的目标。我得到了
UserID Transaction
User-001 0
User-001 1
User-001 2
User-001 3
User-001 6
基本上我想将所有这些合并在一起然后获得所有用户ID的前10个交易(所有50个用户ID)
我的输出:
一直持续到用户-0050
答案 0 :(得分:2)
热门活跃用户:
SELECT Top(10) userid, count(TCODE) as Transaction
FROM SAP_SECURITY_LOG
GROUP BY userID
ORDER BY count(TCODE) DESC
答案 1 :(得分:2)
ORDER BY
与DESC
(降序)结合使用来订购结果。LIMIT
将结果限制为特定金额,例如:LIMIT 10
。因此,您可以使用ORDER BY transaction DESC LIMIT 10
来达到理想的效果。
您的代码:
SELECT DISTINCT (userid), count(TCODE) as Transaction
FROM SAP_SECURITY_LOG
GROUP BY TCODE, USERID
您的代码使用我的建议:
SELECT userid, COUNT(tcode) as transactions_count
FROM sap_security_log
GROUP BY userid
ORDER BY transactions_count DESC LIMIT 10
我根据我的建议制作了一个工作示例,以便您查看查询的作用:http://sqlfiddle.com/#!9/2cc33/1/0
答案 2 :(得分:1)
您可以使用TOP
获取前十名用户SELECT TOP 10 userid, count(TCODE) as Transaction
FROM SAP_SECURITY_LOG
GROUP BY USERID
ORDER BY count(TCODE) DESC ;