sql - GROUP BY 如果组中至少有一个值满足条件则创建组

标签 sql oracle select count group-by

如果组中至少有一个值满足条件,如何创建组?

这是一个 DB 表的示例 test :

| ID | TYPE | COLOR |
|====|======|=======|
|  1 |    1 |     R |
|  2 |    1 |     B |
|  3 |    1 |     G |
|  4 |    2 |     B |
|  5 |    2 |     G |
|  6 |    3 |     G |

我需要全选 TYPE具有多于一行的值,并且该 TYPE 的至少一个 COLOR 是 G。

所以伪选择看起来像这样:
  select TYPE 
    from test
group by TYPE
  having count(*) > 1
     and count(COLOR = 'G') > 0

最佳答案

随着 OP 的修改要求:

select   type
from     test
group by type
having   count(*) > 1 and count(case when color = 'G' then 0 end) > 0
;

关于sql - GROUP BY 如果组中至少有一个值满足条件则创建组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724678/

相关文章:

php - 获取 userid 与另一个表中的 userid 匹配的数据的最简单方法

sql - 提高更新大表内容的查询性能的最佳方法

oracle - 在 oracle 中创建 ACL 时得到未解析的主体

oracle - 在 oracle 中将字符串作为查询运行

MySQL:如何选择非零的最小整数

PHP ("SELECT * FROM Table WHERE ... AND ...")

mysql - SQL 两个日期之间的所有天数

mysql - 增量更新列中的所有名称

oracle - 如何使Oracle错误消息更加详细?

SQL:从表2中获取表1中列的值