当前位置: 首页 > 知识库问答 >
问题:

如何将两个不同where条件的SQL查询组合起来?

归翔
2023-03-14

我编写了一个查询,用于查找特定班级中某一性别的学生人数,但我无法找到一种方法来编写可以对两种性别执行相同操作的查询。我尝试编写两次查询(针对每个性别),然后使用UNION将它们组合起来,但也无法做到这一点。

查询# 1

SELECT MAX(Class.Class_ID) AS Class_ID,  COUNT(Enrolled_In.Reg_No) AS Male_Students
FROM Enrolled_In
INNER JOIN Class ON Enrolled_In.Class_ID = Class.Class_ID
INNER JOIN Student ON Enrolled_In.Reg_No = Student.Reg_No
WHERE Class.Class_ID = 'E-100' AND Student.Gender = 'M';

结果:

CLASS_ID MALE_STUDENTS
-------- -------------
E-100               2

查询#2

SELECT MAX(Class.Class_ID) AS Class_ID,  COUNT(Enrolled_In.Reg_No) AS Female_Students
FROM Enrolled_In
INNER JOIN Class ON Enrolled_In.Class_ID = Class.Class_ID
INNER JOIN Student ON Enrolled_In.Reg_No = Student.Reg_No
WHERE Class.Class_ID = 'E-100' AND Student.Gender = 'F';

结果:

CLASS_ID FEMALE_STUDENTS 
-------- ---------------
E-100                 1

我希望输出如下,最好使用一个查询:

CLASS_ID MALE_STUDENTS FEMALE_STUDENTS
-------- ------------- --------------- 
E-100               2                1

谢谢你。

共有2个答案

严宏朗
2023-03-14

尝试以下方法

select
  c.class_id, 
  sum(case when s.gender = 'm' then 1 else 0 end) as male_students,
  sum(case when s.gender = 'f' then 1 else 0 end) as female_students
from enrolled_in ei
join class c
on ei.class_id = c.class_id
join student s
on ei.reg_no = s.reg_no
where c.class_id = 'e-100'
group by
  c.class_id
吕天逸
2023-03-14
SELECT SUM(case when s.Gender = 'M' then 1 else 0 end) AS Male_Students,
       SUM(case when s.Gender = 'F' then 1 else 0 end) AS Female_Students
FROM Enrolled_In e
JOIN Student s ON e.Reg_No = s.Reg_No
WHERE e.Class_ID = 'E-100' 
 类似资料:
  • 问题内容: 我如何结合这两个更新语句: 问题答案: 您可以使用CASE表达式,如下所示:

  • 我在StackOverflow上找到了一大堆关于条件WHERE子句的答案,但是我找不到一个对我的问题有点特殊的答案,所以我只是想寻求一些帮助。。。 我公司的网站包含所有直接写在C#代码中的SQL查询(我不喜欢,但那是另一回事) 表单中有一组复选框(目前有3个选项,但此列表可能会增加)。对于选择的每个“提供者类型”,需要向WHERE子句添加一个附加条件,但我不确定如何最好地处理这个问题。 下面是处理

  • 问题内容: 我有一个库存表,我想创建一个报告,以显示订购商品的频率。 “库存”表: 基本上,我需要将这两个查询结合在一起。 查询打印库存余额: 打印销售统计信息的查询 我认为某种JOIN可以完成这项工作,但我不知道如何将查询粘合在一起。 所需的输出: 这仅是示例。也许我将需要添加更多条件,因为有更多列。是否存在将多个查询组合在一起的通用技术? 问题答案:

  • 问题内容: 如何合并这两个SQL语句? 两个表中都存在hits10,hits11和hits12。 问题答案: 使用UNION查询-只需在两个查询之间填入“ UNION”即可: 更新 将联合包装在另一个查询中:

  • 我有桌子: 行程:Trip_Num、Trip_Type等 用户的出差历史记录:Username、Trip_Num等 我正在用php做一个项目,需要为一个特定的用户(通过他的用户名)做一个SQL查询--需要知道用户的Trips历史表中Trip_Num的Trip_Type。 附上我的表格: 更新:我需要计算trip_type中的每个值。我的意思是我想看到“步行”-4次,“自行车”-3次,这很好?...

  • 我试图创建一个查询来获取一个firestore集合/文档,其中userId等于当前userId,或者当前userId等于contributorsid。 我想让它给我所有陈述属实的文档。但它只返回第一个。如果我选择只包含其中一个查询(“where”),它们都会工作并返回正确的文档。