【发布时间】:2017-11-27 05:24:26
【问题描述】:
如果组中至少有一个值满足条件,如何创建组?
这是一个DB表test的例子:
| ID | TYPE | COLOR |
|====|======|=======|
| 1 | 1 | R |
| 2 | 1 | B |
| 3 | 1 | G |
| 4 | 2 | B |
| 5 | 2 | G |
| 6 | 3 | G |
我需要选择所有具有多于一行的TYPE 值,并且该类型的颜色中至少有一个是 G。
所以伪选择看起来像这样:
select TYPE
from test
group by TYPE
having count(*) > 1
and count(COLOR = 'G') > 0
【问题讨论】:
-
COLOR 列中是否可以使用 NULL?同一种类型可以有重复的颜色吗?您使用什么版本的 Oracle?
-
@mathguy ,在 COLOR 列中不能为 NULL,对于 TYPE 列中的相同值,COLOR 列中的重复值是可能的。还更正了问题“所有类型具有多于一种颜色且其中至少一种是 G”更改为“所有类型值具有多于一行,并且该类型的至少一种颜色是 G”
标签: sql oracle select count group-by