我有3张桌子:
pd.DataFrame
和student_intership是两个表格的“桥梁”。
create table student(student_id varchar(45), student_name varchar(45));
create table internship(internship_id varchar(45), internship_name varchar(45));
所以,这是多种多样的情况。
情况:
我想得到实习的名字和学生人数,但是 如果该实习没有学生,那么应该有以下示例:
student_intership(student_id, internship_id)
我试过的代码:
intership_name | count(student_id)
--------------------------------
1. intern1 | 20
2. intern2 | 3
3. intern3 | 0
答案 0 :(得分:2)
试试这个:
SELECT i.internship_name, COALESCE(COUNT(si.student_id), 0) AS cnt
FROM internship i
LEFT JOIN student_intership si ON i.internship_id = si.internship_id
GROUP BY si.internship_id, i.internship_name
上述查询将返回表internship
的所有记录。对于与0
条记录无关的internship
条记录,它会返回student
。
答案 1 :(得分:0)
快速刺伤:
SELECT st.student_id
,st.student_name
,si.InternshipCount
FROM student st
LEFT JOIN (
SELECT count(*) AS InternshipCount
,student_id
FROM student_internship s
INNER JOIN internship i
ON s.student_id = i.student_id
group by student_id
) AS si
ON st.student_id = si.student_id