在 SQL 中结合 FREQUENCY 计数和 INNER CASE

Combining FREQUENCY count and INNER CASE in SQL

对于超过 6 名学生的 class,我如何将两者结合起来以显示学生姓名 (sname) 和班级编号 (sectno)?到目前为止我有这个

SELECT student.sname, enroll.sectno,

FROM student

INNER JOIN enroll 

ON student.sid=enroll.sid

SELECT grade, 

COUNT(grade)AS Frequency

FROM enroll

GROUP BY grade

HAVING COUNT(grade)>6

看起来你们很亲密。我认为以下内容应该适合您:

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

在你的 2md Select 中,与 a class 没有关系,它有超过 6 个学生,恕我直言 GROUP BY 应该基于在像 classid 这样的列上。然后您可以使用 Windowed Aggregate:

简单地将两者结合起来
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