我在MS Access中遇到GROUP BY
麻烦。
问题:
当我从GROUP BY
行中删除“tcount,userid,ttext”时,我收到一个错误:“您的查询不包含指定的表达式”tcount“作为聚合函数的一部分”
查询:
Select TCODE, Tcount, Userid, TTEXT
From Sap_Security_Log
Group by Tcode,tcount, userid, ttext
我想要的内容:GROUP BY TCODE
,示例结果集:
TCODE TCOUNT USERID TTEXT
SESS 13 USER-001
SESS 8 USER-003
SESS 1 USER-002
... ... ...
答案 0 :(得分:1)
在您之前的问题中,对于同一个数据库的查询How to get top 10 and ORDER BY() from COUNT()略有不同,我建议使用不同的查询。 (如果你接受了答案,那将是很好的,即使答案不是我的,只要它回答了你的问题。)
我建议的查询可以轻松修改以满足您的需求。
SELECT userid, COUNT(tcode) as transactions_count
FROM sap_security_log
GROUP BY userid
ORDER BY transactions_count DESC LIMIT 10
tcode
添加到GROUP BY
表达式,以便GROUP BY tcode, userid
。ORDER BY
表达式更改为更相关的内容。我建议你ORDER BY
tcode
然后transactions_count
LIMIT 10
,因为您可能正在寻找所有结果,而不仅仅是10。这将导致以下代码:
SELECT userid, tcode, COUNT(tcode) as transactions_count
FROM sap_security_log
GROUP BY tcode, userid
ORDER BY tcode, transactions_count DESC
您可以在以下工作示例中查看:http://sqlfiddle.com/#!9/016f93/1
答案 1 :(得分:0)
尝试:您的查询应该是:
Select TCODE, Tcount, Userid, TTEXT
From Sap_Security_Log
Group by Tcode,Tcount,Userid,Ttext;
或者如果想要分组Tcount :
Select TCODE, Sum(Tcount) As Count, Userid, TTEXT
From Sap_Security_Log
Group by Tcode;
祝你好运。
答案 2 :(得分:0)
您现在正在选择所有列,而不是计算所需的值。请尝试以下查询
Select TCODE, Sum(Tcount), Userid, TTEXT
From Sap_Security_Log
Group by Tcode, userid, ttext
这总结了“group by”列中所有值相同的所有行的Tcount。请注意,列Tcount不在组中。