SQL中频率计数和内部大小写的组合
对于一个学生人数超过6人的班级,如何将两者结合起来以显示学生姓名(SQL中频率计数和内部大小写的组合,sql,inner-join,oracle-apex,frequency,Sql,Inner Join,Oracle Apex,Frequency,对于一个学生人数超过6人的班级,如何将两者结合起来以显示学生姓名(sname)和学区编号(sectno)?到目前为止,我有这个 SELECT student.sname, enroll.sectno, FROM student INNER JOIN enroll ON student.sid=enroll.sid 与 看起来你很接近。我认为以下几点应该适合您: SELECT student.sname, enroll.sectno, COUNT(enroll.grade) AS F
sname
)和学区编号(sectno
)?到目前为止,我有这个
SELECT student.sname, enroll.sectno,
FROM student
INNER JOIN enroll
ON student.sid=enroll.sid
与
看起来你很接近。我认为以下几点应该适合您:
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选择中,与拥有6名以上学生的班级没有关系,因此,
分组依据
应基于类似classid
的列。然后,您可以使用窗口聚合将两者简单地结合起来:
student
和enroll
表格之间的关系是什么?我明白了。我对SQL本身非常陌生,所以我从来没有想过使用分区或使用窗口聚合。这是非常有用的我不知道我应该在哪里声明我的计数变量。在声明内部联接之后,我尝试使用WHERE子句。谢谢你的时间和帮助。这是非常有信息性的,谢谢您的反馈@S.Rain很高兴能帮上忙!:)
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
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