首页 > 解决方案 > 当列中并非所有值都相等时返回数据

问题描述

我有一个简单的表格,如下所示:

| yyyy_mm_dd | id | name     | count |
|------------|----|----------|-------|
| 2020-10-31 | 1  | price    | 90    |
| 2020-10-31 | 1  | restrict | 90    |
| 2020-10-31 | 1  | checkin  | 90    |
| 2020-10-31 | 2  | price    | 322   |
| 2020-10-31 | 2  | restrict | 322   |
| 2020-10-31 | 2  | checkin  | 311   |
...

如何构造一个查询,该查询将返回每个具有相同计数的ids ?因此,使用上述数据,将返回 2,因为并非所有计数都相等。nameidname

如果可以不单独对每个名称进行硬编码,那就太好了,因为真实数据集中有很多。

标签: sqlhivehiveql

解决方案


一个简单的方法是聚合:

select name
from t
group by name
having min(count) <> max(count);

如果您想确保有三行,请添加and count(*) = 3.


推荐阅读