如何按日期计算 hive SQL 表中 NEW id 的数量?

Posted

技术标签:

【中文标题】如何按日期计算 hive SQL 表中 NEW id 的数量?【英文标题】:How to count the number of NEW ids in hive SQL table by date? 【发布时间】:2020-08-26 21:23:16 【问题描述】:

我有一张桌子,上面有一堆月份和 ID。我想计算每个月我获得了多少新 ID。例如,假设我有下表:

Month | ID
------------
Jan   | 123
Jan   | 456
Jan   | 789
Feb   | 123
Feb   | 101112
Mar   | 456
Mar   | 12345
Mar   | 6789

我希望输出是:

Month | # New IDS
------------------
Jan   | 3
Feb   | 1
Mar   | 2

我真的迷失了解决此问题的最佳方法,并且无法找到与此问题类似的任何内容。

【问题讨论】:

【参考方案1】:

一个选项使用两个级别的聚合。假设 monthdate 数据类型(或至少可以始终按日期排序):

select month, count(*) new_ids
from (select min(month) month from mytable group by id) t
group by month

你也可以使用窗口函数:

select month, count(*) new_ids
from (
    select month, row_number() over(partition by id order by month) rn
    from mytable
) t
where rn = 1

【讨论】:

以上是关于如何按日期计算 hive SQL 表中 NEW id 的数量?的主要内容,如果未能解决你的问题,请参考以下文章

hive中如何进行按周计算

如何在 Hive SQL 中按日期范围独家加入?

在 hive/impala sql 中按日期获取数据,

如何在 Looker 中按日期计算状态变化?

MySQL SQL 获取表中的最新记录?

SQL将计算列添加到表中