これは以前に何度か尋ねられたことを理解していますが、かなり長い間、特定の問題にさまざまな既存のソリューションを適用しようとしましたが、成功しませんでした。それで、私は何らかのガイダンスを期待してここに来ます。
別のテーブルのさまざまな質問にリンクされた回答を含む tblanswers というテーブルがあります。私が望むのは、特定の質問 ID の各回答のカウントを取得することですが、毎月最初の n 件の回答に制限します。
tblanswers からのサンプル データ:
id qid answer timestamp
72 162 2 1366027324
71 161 4 1343599200
70 162 2 1366014201
69 161 4 1366011700
68 162 2 1366006729
67 161 3 1366010948
66 162 2 1365951084
これは私がこれまでに持っているクエリです:
SELECT *, COUNT(*) c FROM(
SELECT answer, timestamp, YEAR(FROM_UNIXTIME(timestamp)) yr, MONTH(FROM_UNIXTIME(timestamp)) mo FROM tblanswers
WHERE qid = 161
ORDER BY timestamp ASC
) q GROUP BY YEAR(FROM_UNIXTIME(timestamp)), MONTH(FROM_UNIXTIME(timestamp)), answer
それは私に次のようなものを与えるでしょう: (サンプルデータの日付と数字は正確ではありません)
answer yr mo c
1 2013 5 5
2 2013 5 3
3 2013 5 2
1 2013 6 5
2 2013 6 15
3 2013 6 7
1 か月に最初の 3 つの回答のみを表示したい場合、count が 3 を超えることはありません。毎月制限するにはどうすればよいですか?
最終的なデータは、次のように各回答の合計になります。
answer num_answers
1 2
2 3
3 3
これらのソリューションの 1 つが機能すると思いますが、どのように機能しないか: http://code.openark.org/blog/mysql/sql-selecting-top-n-records-per-group http://code.openark.org/ blog/mysql/sql-selecting-top-n-records-per-group-another-solution
どんな助けでも大歓迎です。ありがとう!