編集: 私は MySQL を使用しています。同じ質問の別の投稿を見つけましたが、Postgres にあります。MySQL が必要です。
このサイトや他のサイトを広範囲に検索した後、この質問をしますが、意図したとおりに機能する結果が見つかりませんでした.
人のテーブル (recordid、personid、transactionid) とトランザクション テーブル (transactionid、rating) があります。各人の最も一般的な評価を返す単一の SQL ステートメントが必要です。
現在、指定された人物 ID の最も一般的な評価を返すこの SQL ステートメントがあります。それは機能し、おそらく他の人を助けるかもしれません.
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