各科目の最大点数を表示できる照会が必要です。 は3人の学生は出力によって科学の98を獲得したと言うことはcount(最大(マーク))、マーク、件名、マークによるinfo_tableグループからの件名の取得方法。
count marks subject
3 98 Maths
各科目の最大点数を表示できる照会が必要です。 は3人の学生は出力によって科学の98を獲得したと言うことはcount(最大(マーク))、マーク、件名、マークによるinfo_tableグループからの件名の取得方法。
count marks subject
3 98 Maths
まず各被験者の最大のマークを見つけると、サブクエリとして設定し、この結果を使用したテーブルからのカウントを見つけるためにEXISTS
を使用する必要があります最大マーク。あなたの質問は、ハイブ
v_max_marks上にある場合は、以下のSQLを使用することができ
クエリ
select `subject`,
count(*) as `count`,
max(`marks`) as `marks`
from `student` t1
where exists(
select 1 from (
select `subject`,
max(`marks`) as `max_marks`
from `student`
group by `subject`
) t2
where t1.`subject` = t2.`subject`
and t1.`marks` = t2.`max_marks`
)
group by `subject`;
は、各被験者の最大マークを取得します。このビューはメインテーブルに結合され、学生数を取得します。
WITH v_max_marks
AS
(SELECT subject, MAX(marks) AS marks
FROM my_table
GROUP BY subject)
SELECT my_table.subject,
my_table.marks,
COUNT(*) AS student_count
FROM my_table JOIN v_max_marks
ON (my_table.subject = v_max_marks.subject AND
my_table.marks = v_max_marks.marks)
GROUP BY my_table.subject,
my_table.marks;