hive保留三年内月末数据sql怎么写
时间: 2024-09-17 12:08:57 浏览: 41
hive sql + left join 数据缺失
在Hive中,如果你想保留最近三年每个月的月底数据,你可以使用`DATE_TRUNC`函数结合`MONTH`和`YEAR`函数以及`DATEDIFF`函数来筛选出满足条件的数据。假设你有一个名为`sales_data`的表,其中包含`sale_date`列记录销售日期,你可以尝试使用以下SQL查询:
```sql
CREATE TABLE if not exists monthly_sales AS
SELECT * FROM sales_data
WHERE sale_date >= ADD_DATE(CURRENT_DATE(), - INTERVAL '36 months') -- 最近三年
AND sale_date = DATE_TRUNC('month', sale_date) -- 只保留每月最后一天的数据
-- 如果你想清理掉超过三年的旧数据,可以创建一个新的表并删除旧数据
CREATE TABLE sales_data_temp AS
SELECT * FROM monthly_sales;
DROP TABLE IF EXISTS sales_data; -- 删除原始表(假设不再需要)
ALTER TABLE sales_data_temp RENAME TO sales_data; -- 将临时表改名替换原表
```
这个查询首先创建了一个新的名为`monthly_sales`的表,包含了最近三年每月最后一天的销售数据。然后,如果需要删除旧的不符合条件的数据,会创建一个临时表`sales_data_temp`,将新数据保存,并删除原来的`sales_data`表,再将临时表重命名。
阅读全文