【发布时间】:2021-05-19 00:08:39
【问题描述】:
我的表中有一堆学生记录。
school stduent_id start_date end_date
111 123 2010-02-03 2012-02-03
222 345 2013-02-03 2014-02-03
222 567 2015-02-03 2018-02-03
我想计算每所学校每年有多少学生,比如从 2014 年一直到 2021 年。
目前,我使用的是横向视图,但它是硬编码的:
SELECT school
, yrs
, COUNT(DISTINCT stduent_id) AS cnt
FROM TABLE
LATERAL VIEW EXPLODE(ARRAY(2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021))a AS yrs
WHERE 1=1
AND YEAR(start_date) <= yrs
AND YEAR(end_date) >= yrs
我希望当年份移动时自动更新,例如,现在应该是 2014-2021,明年应该是 2015-2022。
知道我该怎么做吗?谢谢!
【问题讨论】:
标签: sql dynamic hive hiveql lateral-join