この表には、試験の対象となった生徒の名前が、いつ実行されたか、いつ実行されたかが格納されます。そのタイムラインは年間を通じて一貫しているので、重複したレコードが存在する可能性があります。科目は静的な2(数学、科学)です。私は、1年を通して各サブで失敗した回数をカウントする必要があります。異なるアイテムの出現回数をカウントします。
私のクエリ:
select a.name,
(select count(*)
from student
where name = a.name
and subject = 'maths'
) as maths,
(select count(*)
from student
where name = a.name
and subject = 'science'
) as science
from student a
group by name
私のクエリは動作しますが、対象者の数が2つ以上あるとき、それは効率的ではありません。 P.P.私はテーブルの構造が良いことを知っている。 ?しかし、これは課題です。 enter image description here
EDIT:問題は、被験者の数が約10であることです。それから最高のクエリは何ですか?そのような配列や別のテーブルにそれらを格納する必要がありますか?
ありがとうございました!幸せな一日:)
私はあなたに答えを教えてもらえますか?ところで、この問題に関する答えはたくさんあります(ピボットテーブルを参照してください) –