编辑:我正在使用 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
但是,我需要一个语句来执行上述语句对 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
您能给我的任何帮助将不胜感激。谢谢。
PERSONTABLE
:
RecordID, PersonID, TransactionID
1, Adam, 1
2, Adam, 2
3, Adam, 3
4, Ben, 1
5, Ben, 3
6, Ben, 4
7, Caitlin, 4
8, Caitlin, 5
9, Caitlin, 1
TRANSACTIONTABLE
:
TransactionID, Rating
1 Good
2 Bad
3 Good
4 Average
5 Average
我正在搜索的 SQL 语句的输出是:
输出:
PersonID, MostCommonRating
Adam Good
Ben Good
Caitlin Average