如何使用 or 条件和计数 select 来自 sql 的东西?

How to select something from sql with an or condition and a count?

表格:

任务:

Find the names of all classes that either meet in room R128 or have five or more students enrolled.

您将如何编写 SQL 语句来包含上述两个条件?我能够在两个 SQL 语句中完成:

SELECT CNAME
FROM   ENROLLMENT
GROUP BY CNAME
HAVING COUNT(CNAME) > 5
SELECT CNAME
FROM CLASS
WHERE ROOM = 'R128'

但是我怎样才能将这些合并到一个语句中呢?

您可以将包含聚合的条件与 OR 运算符一起添加到 HAVING 子句中:

ЅΕLΕCΤ e.CΝΑΜΕ
  FRΟΜ CLASS c
  JOIN ENROLLMENT e
    ON e.CΝΑΜΕ = c.CΝΑΜΕ
 GRΟՍΡ ΒY e.CΝΑΜΕ
HAVING COUNT(e.CΝΑΜΕ) >= 5 
    OR SUM(CASE WHEN c.ROOM='R128' THEN 1 ELSE 0 END)>0

我会在 where 子句中使用直接过滤来编写:

select cname
from class c
where
    room = 'R128'
    or (select count(*) from enrolled e where e.cname = c.cname) > 5
SELECT CNAME
FROM   ENROLLMENT
GROUP BY CNAME
HAVING COUNT(CNAME) > 5 
UNION
SELECT CNAME
FROM CLASS
WΗΕRΕ RΟΟΜ = 'R128'

这样您就可以将 2 个不同的数据合并在一起