Hive Query 在 Select 中具有多列并按一列分组

Posted

技术标签:

【中文标题】Hive Query 在 Select 中具有多列并按一列分组【英文标题】:Hive Query with multiple Columns in Select and group by one column 【发布时间】:2019-03-20 21:31:17 【问题描述】:

我有下面的数据集示例图像和预期结果。在具有十亿条记录的数据集中实现这种结果的最佳方法是什么? 我们应该使用中间临时表还是在 1 个查询中。

要求:- 获取表中超过 2 条记录的 SN 的所有记录,只显示价格为 100 的记录

CREATE TABLE test(
  `sn` string, 
  `itemA` string, 
  `itemB` string, 
  `price` int)

insert into table test values ('1','A','D',100),('1','B','E',100),('1','C','F',200),('2','A','D',100),('2','C','F',200);

【问题讨论】:

【参考方案1】:

使用窗口函数:

select t.*
from (select t.*, count(*) over (partition by sn) as cnt
      from test t
     ) t
where cnt > 2 and price = 100;

【讨论】:

以上是关于Hive Query 在 Select 中具有多列并按一列分组的主要内容,如果未能解决你的问题,请参考以下文章

.csv 不是 Select Hive Query 上的 SequenceFile 错误

Hive 排除 SELECT 中某列

Spark-SQL 是不是支持使用 regex 规范的 Hive Select All Query with except Columns

Presto on Search of normal select query[non partitioned hive table]给出列$path在数据库默认表<Table>中不存在

Big Query (SQL) 将多列转换为行/数组

创建按一/多列分区的 BigQuery 外部表