一連の値をリストする結果テーブルがあり、それぞれが結果が作成された日付を含む別のテーブルにリンクしています。
(CASE を使用して) すべての日付を取得するために SQL を使用していますが、単一の範囲の結果しか取得できません。
Select
count(CASE
WHEN results.test_id IN ( SELECT id
FROM `test`
WHERE `posted`
BETWEEN '2011-07-01 00:00:00'
AND '2011-07-01 23:59:59')
THEN results.test_id
ELSE NULL
END) AS "1st July"
from `results`
WHERE results.window_id = 2 and results.mark > 90;
また、すべての範囲を取得する別の SQL クエリもありますが、一度に 1 つの日付に対してしか機能しません。
SELECT
CASE
when mark > 90 then '>90%'
when mark > 80 then '>80%'
when mark > 70 then '>70%'
END as mark_results,
COUNT(*) AS count
FROM (SELECT mark from results where window_id =2) as derived
GROUP BY mark_results
ORDER BY mark_results;
私が望むのは、すべてを 1 つの統一されたクエリにまとめて、結果の範囲ごとに関連する合計を表示することです。以下のように:
Result Range | 1st July | 2nd July | 3rd July | 4th July
>90% | 0 | 0 | 0 | 1
>80% | 1 | 2 | 1 | 1
>70% | 4 | 5 | 5 | 4
各範囲の合計が日付の下に表示されるようにします。
可能だと思います。