Sql 如何从COUNT()中获取前10名和ORDER BY()
下图是我必须使用的数据库示例 数据库中还有更多字段-userid一直到USER-0050 我想要实现的是前10名用户活动。根据上面的图像,所需输出为:Sql 如何从COUNT()中获取前10名和ORDER BY(),sql,Sql,下图是我必须使用的数据库示例 数据库中还有更多字段-userid一直到USER-0050 我想要实现的是前10名用户活动。根据上面的图像,所需输出为: User ID Transaction USER-005 14 USER-001 12 USER-002 12 USER-003 8 USER-004 6 到目前为止,我所尝试的: SELECT DISTINCT (useri
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
基本上,我希望将所有这些合并在一起,然后得到所有userid(所有50个userid)的前10个事务
感谢您的指导。我希望我想说的有道理
我的输出:
一直持续到user-0050最活跃的用户:
SELECT Top(10) userid, count(TCODE) as Transaction
FROM SAP_SECURITY_LOG
GROUP BY userID
ORDER BY count(TCODE) DESC
您可以使用top获得前十名用户
SELECT TOP 10 userid, count(TCODE) as Transaction
FROM SAP_SECURITY_LOG
GROUP BY USERID
ORDER BY count(TCODE) DESC ;
- 您可以结合使用
和ORDER BY
(降序)对结果进行排序DESC
- 您可以使用
将结果限制在一定的范围内,例如:LIMIT
LIMIT 10
- 为了使您的代码更易于阅读(也便于我们提出建议),您需要与大写/小写保持一致(例如,对SQL关键字使用大写)
orderbytransactiondesclimit 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
我用我的建议做了一个工作示例,以便您可以看到查询的作用:您使用的是什么数据库(MySQl、Oracle等)并为不止一个用户添加示例数据和预期结果。我的数据库是在excel工作表中提供给我的,从那时起我就设法将其输入MS Access…如果这有帮助,我已经为多个用户添加了更多数据和预期结果。我不确定您试图实现什么。使用您提供的数据,您编写的结果是每个用户的事务id的总和。如果我理解正确,您希望前10名活动用户-交易最多的用户..追加订单方式。。。在您的查询中,在
选择之后添加前10个,OP应该会列出其所需的前10个用户活动…如果您已经使用分组方式
,则不需要进行区分。。。。。另外:如果你有按TCODE分组,USERID
,你会得到OP显示的结果,而这不是他想要的。。。。。