hive写一段sql:从表中查询数据,向另一表中插入数据,字段包括日期和对应每个日期的近30天人数,日期为从20240912到20240923
时间: 2024-09-23 14:03:25 浏览: 38
spark或mr引擎插入的数据,hive表查询数据为0
在Hive中,你可以使用`INSERT INTO TABLE`语句结合窗口函数`ROW_NUMBER()`来实现这个需求。假设你有一个源表叫做`source_table`,目标表为`target_table`,并且这两个表都有日期字段`date`和`count`。
以下是示例SQL:
```sql
INSERT INTO target_table (date, daily_count)
SELECT t1.date,
COUNT(t1.count) OVER (
ORDER BY t1.date
ROWS BETWEEN 28 PRECEDING AND CURRENT ROW
) AS daily_count
FROM source_table t1
WHERE t1.date BETWEEN '20240912' AND '20240923'
ORDER BY t1.date;
```
这里,我们首先从`source_table`中选择日期在指定范围内的行,然后通过窗口函数`COUNT()`计算出每个日期最近30天的累计人数(包括当前日期)。`ROWS BETWEEN 28 PRECEDING AND CURRENT ROW`定义了窗口范围,即从当前行前28行开始计数。
阅读全文