insert into table dw.temp_ol_autotask_model_channels_predict partition (dt BETWEEN '20230601' AND '20230630') select from from dw.ol_autotask_model_channels_predict_content a join (select cust_id, sum(case when predict in ('other', 'middle') then 0 else 1 end) predict_day, dt from dw.ol_autotask_model_channels_predict_content where dt = '20230601' group by cust_id, dt ) b on a.cust_id = b.cust_id where a.dt='20230601' and b.predict_day = 0
时间: 2024-04-07 09:33:53 浏览: 51
根据你提供的代码,你想将查询结果插入到 `dw.temp_ol_autotask_model_channels_predict` 表的 `dt` 分区中。以下是你提供的代码的修改版本:
```sql
INSERT INTO TABLE dw.temp_ol_autotask_model_channels_predict
PARTITION (dt)
SELECT *
FROM dw.ol_autotask_model_channels_predict_content a
JOIN (
SELECT cust_id, SUM(CASE WHEN predict IN ('other', 'middle') THEN 0 ELSE 1 END) AS predict_day, dt
FROM dw.ol_autotask_model_channels_predict_content
WHERE dt = '20230601'
GROUP BY cust_id, dt
) b ON a.cust_id = b.cust_id
WHERE a.dt = '20230601'
AND b.predict_day = 0
AND a.dt BETWEEN '20230601' AND '20230630';
```
在上述代码中,我们使用 `INSERT INTO` 语句将查询结果插入到 `dw.temp_ol_autotask_model_channels_predict` 表。通过 `PARTITION (dt)` 指定了分区字段为 `dt`。在 `SELECT` 语句中,我们选择了所有列使用 `SELECT *`。通过 `JOIN` 子句连接了两个表,并使用子查询获取了符合条件的数据。最后使用 `WHERE` 子句限制了日期范围为 `'20230601'` 到 `'20230630'`。
请根据你的实际情况修改表名、列名和日期范围,以适应你的需求。
阅读全文