gpt4 book ai didi

数据库的 SQL 查询查找学生的 nr

转载 作者:行者123 更新时间:2023-12-05 07:13:37 24 4
gpt4 key购买 nike

我是数据库的初学者,我有以下内容:我需要展示那些有最多不正确学生的类(class)(所以那些还没有带书的人和那些迟于 date_to_return 带书的人)

  1. 表格类(class):类(class)代码、类(class)名称。

  2. pupils_on_courses:pupil_id,course_code。

  3. 学生:pupil_id

  4. books_out_on_loan:pupil_id、isbn、date_borrowed、date_to_return_date_returned

我试图找出每个部分的不正确学生的数量,但现在我一直在寻找最大值。

我认为错误在于我计算date_returned & date_to_return

select 
c.course_code, c.course_name, count (bb.pupil_id)
from
courses c
inner join
pupils_on_courses ps on c.course_code = ps.course_code
inner join
pupils p on p.pupil_id = ps.pupil_id
inner join
books_out_on_loan bb on p.pupil_id = bb.pupil_id
group by
c.course_code, c.course_name
having
count (bb.pupil_id) = (select max(count(*))
from pupil p
inner join books_out_loan bb on p.pupil_id = bb.pupil_id
where bb.date_returned is null
or bb.date_returned > date_to_return
group by c.course_code, c.course_name)

非常感谢您的帮助

编辑:一些样本数据是: enter image description here

最佳答案

select 
c.course_code, min(c.course_name) course_name,
count(distinct pc.pupil_id) as max_pupil_cnt
from
courses c inner join pupils_on_courses pc
on ps.course_code = c.course_code
inner join books_out_on_loan b
on b.pupil_id = pc.pupil_id
where b.date_returned is null or b.date_returned > b.date_to_return
group by c.course_code
having count (distinct pc.pupil_id) >= all (
select count(distinct pc2.pupil_id)
from pupils_on_courses pc2 inner join books_out_loan b2.
on b2.pupil_id = pc2.pupil_id
where b2.date_returned is null or b2.date_returned > b2.date_to_return
group by pc2.course_code
);

有现代方法可以做到这一点,无需重复逻辑。我猜你需要坚持基本的东西,因为这看起来像是家庭作业。

关于数据库的 SQL 查询查找学生的 nr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60103169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com