2017-11-28 11 views

答えて

0

まず各被験者の最大のマークを見つけると、サブクエリとして設定し、この結果を使用したテーブルからのカウントを見つけるために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`; 
0

は、各被験者の最大マークを取得します。このビューはメインテーブルに結合され、学生数を取得します。

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; 
関連する問題