编辑:我正在使用MySQL,我发现了另一个同样问题的帖子,但它是在Postgres; 我需要MySQL.
在广泛搜索本网站和其他网站之后我问这个问题,但是没有找到符合我意图的结果.
我有一个人员表(recordid,personid,transactionid)和一个事务表(transactionid,rating).我需要一个SQL语句,可以返回每个人最常见的评级.
我目前有这个SQL语句,它返回指定人员id的最常见评级.它有效,也许它可以帮助别人.
SELECT transactionTable.rating as MostCommonRating
FROM personTable, transactionTable
WHERE personTable.transactionid = transactionTable.transactionid
AND personTable.personid = 1
GROUP BY transactionTable.rating
ORDER BY COUNT(transactionTable.rating) desc
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
但是,我需要一个声明来执行上述声明为personTable中的每个personid执行的操作.
我的尝试在下面; 然而,它超时我的MySQL服务器.
SELECT personid AS pid,
(SELECT transactionTable.rating as MostCommonRating
FROM personTable, transactionTable
WHERE personTable.transactionid = transactionTable.transactionid
AND personTable.personid = pid
GROUP BY transactionTable.rating
ORDER BY COUNT(transactionTable.rating) desc
LIMIT 1)
FROM persontable
GROUP BY personid
Run Code Online (Sandbox Code Playgroud)
你能给我的任何帮助都是非常有必要的.谢谢.
PERSONTABLE:
RecordID, PersonID, TransactionID
1, Adam, 1
2, Adam, 2
3, Adam, …Run Code Online (Sandbox Code Playgroud)