amazon-redshift - Redshift 是否支持 SELECT 中的用户定义变量?
问题描述
我正在查看我们的一些 Redshift 查询,发现具有多个嵌套选择级别的案例,如下所示:
LEFT JOIN
(
SELECT *
FROM (
SELECT
id,
created_at,
min(created_at) OVER (PARTITION BY id, slug) AS transition_date
FROM table
WHERE status = 'cancelled'
GROUP BY id, Y, Z, created_at
)
WHERE created_at = transition_date
) t1 ON b.id = t1.id
如果这是 MySQL,我会做这样的事情来删除一级嵌套选择:
LEFT JOIN
(
SELECT
id,
created_at,
@tdate := min(created_at) OVER (PARTITION BY id, slug) AS transition_date
FROM table
WHERE status = 'cancelled' and @tdate = bul.created_at
GROUP BY id, Y, Z, created_at
) t1 ON b.id = t1.id
在 RedShift 中有可能有类似的东西吗?
---更新忘记在嵌套的SELECT中包含GROUP BY,这可能会影响答案
解决方案
您可以将 transition_date 的条件移动到 JOIN 条件中:
LEFT JOIN
(
SELECT
id,
created_at,
min(created_at) OVER (PARTITION BY id, slug) AS transition_date
FROM table
WHERE status = 'cancelled'
) t1 ON b.id = t1.id AND t1.created_at = t1.transition_date
推荐阅读
- python - 如何合并熊猫数据框中的两列,堆叠在顶部
- c# - 如何使用密码保护文件夹中的多个压缩文件进行压缩?
- python - 用python读取pdf中的两侧表
- sql - 需要 SQL 来选择行,直到列的总和达到最后一行不会完全消耗值的值
- nativescript - 在 Android 上获取 Mac 地址
- sql - 如何在函数中抛出异常
- google-app-maker - 检查以逗号分隔的字符串以获取绑定中的值
- regex - 正则表达式匹配字符串,中间有一个可选部分,中间用空格括起来
- jquery - 从使用ajax附加行的表中使用jquery ajax删除记录?
- python - 能够在 Local 中提取正确的 DF dtype,但是如果我在 GCP Dataproc(源输入文件)中尝试相同的方法,则面临问题