2017-07-17 3 views
0

6人以上の学生がいるクラスで、学生名(sname)とセクション番号(sectno)を表示するにはどうすれば両方を組み合わせるのですか?これまでのところ私はあなたが非常に接近していたようFREQUENCY数とINNER CASEをSQLで結合する

SELECT grade, 

COUNT(grade)AS Frequency 

FROM enroll 

GROUP BY grade 

HAVING COUNT(grade)>6 
+0

'student'と' enroll'テーブル間の関係は何ですか? –

答えて

0

が見えます。この

SELECT student.sname, enroll.sectno, 

FROM student 

INNER JOIN enroll 

ON student.sid=enroll.sid 

を持っています。私は以下のあなたのために働くべきだと思う:あなたの2MDで

SELECT 
student.sname, 
enroll.sectno, 
COUNT(enroll.grade) AS Frequency 
FROM student 
INNER JOIN enroll ON student.sid=enroll.sid 
GROUP BY student.sname, enroll.sectno 
HAVING COUNT(enroll.grade)>6 
+0

私はCOUNT変数をどこに宣言すればいいのか分かりませんでした。 INNER JOINを宣言した後、WHERE句を使用しようとしました。あなたの時間と助けてくれてありがとう。これは非常に有益です –

+0

フィードバックに感謝@ S.Rainは喜んで助けて! :) – WJS

0

GROUP BYclassidのような列に基づくべきであるIMHO 6学生、より多くを持っているクラスとは関係がありません]を選択します。そして、あなたは単にウィンドウ表示集計を使用して、両方を組み合わせることができます。

with cte as 
(
    SELECT student.sname, enroll.sectno, 
     -- get the count per class, might be a different column than sectno 
     count(*) over (partition by enroll.sectno) as cnt 
    FROM student 
    INNER JOIN enroll 
    ON student.sid=enroll.sid 
) 
select * from cte 
where cnt > 6 
+0

私は参照してください。私はSQL自体が非常に新しいので、Partition Byを使用したり、Windowed Aggregateを使用することは考えていませんでした。これは非常に便利です –