私は次のクエリを持っています:
SELECT saturday_combinations.index, v.val AS `row` , COUNT( * ) AS `count`
FROM saturday_combinations
INNER JOIN (
SELECT ONE AS val
FROM saturday_combinations
WHERE ONE IS NOT NULL
UNION
SELECT TWO AS val
FROM saturday_combinations
WHERE TWO IS NOT NULL
UNION
SELECT THREE AS val
FROM saturday_combinations
WHERE THREE IS NOT NULL
UNION
SELECT FOUR AS val
FROM saturday_combinations
WHERE FOUR IS NOT NULL
UNION
SELECT FIVE AS val
FROM saturday_combinations
WHERE FIVE IS NOT NULL
UNION
SELECT SIX AS val
FROM saturday_combinations
WHERE SIX IS NOT NULL
UNION
SELECT SEVEN AS val
FROM saturday_combinations
WHERE SEVEN IS NOT NULL
) v ON v.val = saturday_combinations.ONE
OR v.val = saturday_combinations.TWO
OR v.val = saturday_combinations.THREE
OR v.val = saturday_combinations.FOUR
OR v.val = saturday_combinations.FIVE
OR v.val = saturday_combinations.SIX
OR v.val = saturday_combinations.SEVEN
GROUP BY v.val
クエリの目的は、テーブルsaturday_combinationsの列ONE、TWO、THREE、FOUR、FIVE、SIX、およびSEVENに含まれるさまざまな値の数を提供することです。ただし、desc制限を4にして、最後の4行(最後の4つの最大インデックス)に基づいてカウントのみを実行するようにします。しかし、私はそれを組合と連携させることができていません。最後の4行を取得してそれらの分布を計算するのではなく、最後に順序と制限を追加すると、最終選択からの制限のみになります。任意のヒント?
テーブルスキーマは次のとおりです。
index | ONE|TWO|THREE|FOUR|FIVE|SIX|SEVEN
1 1 3 7 10 11 12 13
2 3 4 5 30 31 22 23
3 1 2 3 4 5 6 7
4 1 2 3 4 5 6 7
5 1 2 3 4 5 6 7
6 1 2 3 4 5 6 7
7 1 2 3 4 5 6 7
8 1 2 3 4 5 6 7
9 1 2 3 4 5 6 7
10 1 2 3 4 5 6 7
インデックスは自動インクリメントであり、ONE-SEVENには整数値があります。
テーブルには約3000行あり、最後のn行に基づいて各値の発生をカウントしたいと思います。
Ideal result for the last n rows where n = last 3 rows should be
Numbers|Count
1 3
2 3
3 3
4 3
5 3
6 3
7 3
nを増やして最後の6行を含めると、それらの数が増えるはずです。私が10行続くことができれば、カウントは増加し、他の数値はそれらのカウントとともに表示されるはずです。
これが実際のテーブルのサンプルへのリンクです。 http://sqlfiddle.com/#!2/d035b