Mariadb 如何在 select 查询中使用组、联合、and/or sum/count
Maria db how to use groups, unions, and/or sum/count in a select query
三天来,我一直在绞尽脑汁想弄清楚这个问题。一般来说,我是 Maria db 和 sql 的新手。我已经设法在以前的类似情况下使用 UNION
但它在这个情况下不起作用。
我有3个table如下:
create table zipcode (zip int, city varchar(30))
create table student (id int, zip_fk int)
create table teacher (id int, zip_fk int)
我想创建一个 select 查询,其中包含以下字段:城市、城市的学生人数、城市的教师人数以及来自城市的学生和教师总数城市。本质上,结果应按城市分组。我完全不知所措。
编辑。我面临的挑战是 city
字段位于不同的 table 并且不是主键或外键。因此,我不能直接使用它。主键是 zip
,这意味着我首先必须从他们各自的 table 派生出学生和教师,然后输入邮政编码 table 以将他们的邮政编码与城市进行比较。
这有点棘手。这是使用 union all
和 group by
的一种方法:
select city, sum(student) as students, sum(teacher) as teachers
from ((select z.city, 1 as student, 0 as teacher
from student s join
zipcode z
on s.zip_fk = z.zip
) union all
(select z.city, 0 as student, 1 as teacher
from teacher t join
zipcode z
on t.zip_fk = z.zip
)
) st
group by city;
三天来,我一直在绞尽脑汁想弄清楚这个问题。一般来说,我是 Maria db 和 sql 的新手。我已经设法在以前的类似情况下使用 UNION
但它在这个情况下不起作用。
我有3个table如下:
create table zipcode (zip int, city varchar(30))
create table student (id int, zip_fk int)
create table teacher (id int, zip_fk int)
我想创建一个 select 查询,其中包含以下字段:城市、城市的学生人数、城市的教师人数以及来自城市的学生和教师总数城市。本质上,结果应按城市分组。我完全不知所措。
编辑。我面临的挑战是 city
字段位于不同的 table 并且不是主键或外键。因此,我不能直接使用它。主键是 zip
,这意味着我首先必须从他们各自的 table 派生出学生和教师,然后输入邮政编码 table 以将他们的邮政编码与城市进行比较。
这有点棘手。这是使用 union all
和 group by
的一种方法:
select city, sum(student) as students, sum(teacher) as teachers
from ((select z.city, 1 as student, 0 as teacher
from student s join
zipcode z
on s.zip_fk = z.zip
) union all
(select z.city, 0 as student, 1 as teacher
from teacher t join
zipcode z
on t.zip_fk = z.zip
)
) st
group by city;