sql - 当列中的所有值并非都相等时返回数据

标签 sql hive hiveql

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

| 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   |
...

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

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

最佳答案

一个简单的方法是聚合:

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

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

关于sql - 当列中的所有值并非都相等时返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65204672/

相关文章:

linux - 如何禁止打印到 CLI 的配置单元列名?

apache-spark - Hive UDF 用于选择除某些列之外的所有列

sql - SQL错误缺少右括号

java - 使用 hadoop 进行数据分析

hadoop - 表计数大于Hive中的文件记录计数

shell - 如何使用Pig/Hive从Weblog文件中的URL中提取字符串

sql - Hive 查询 - 从每个组中获取多个字段的最大值和总和

MySQL:根据已选行中的值选择行

mysql - 将游标变量获取到局部变量中

sql - 在 Google bigquery 中转换数据 - 提取文本、将其拆分为多列并旋转数据