sql - 我无法从下面的查询中获得 max(reservation_date) 的最后日期。查询也需要很长时间
问题描述
我下面的查询需要很长时间。我不知道我在哪里做错了。希望输出 Resort_name Resource_name last_date("它在预订中预订") 该预订的到达日期
SELECT
max(rsv.reservation_date),
r.name AS resort_name,
rsv.name AS resource_name,
rsv.reservation_date,
rv.arrival_date
FROM
resorti18n r
JOIN resourcebasei18n re ON ( r.resort_id = re.resort_id )
JOIN reservedresourcebase rsv ON (rsv.resource_id=re.resource_id)
JOIN reservation rv ON ( rv.resort_id = re.resort_id )
JOIN admin_organisation ao ON ( ao.admin_organisation_id = r.admin_organisation_id )
WHERE
rsv.type = 'producttype'
group by
r.name,
rsv.name,
rsv.reservation_date,
rv.arrival_date;
解决方案
使用 row_number()
with cte as(SELECT
rsv.reservation_date,
row_number() over(partition by r.name,rsv.name order by rsv.reservation_date desc) rn,
r.name AS resort_name,
rsv.name AS resource_name,
rsv.reservation_date,
rv.arrival_date
FROM
resorti18n r
JOIN resourcebasei18n re ON ( r.resort_id = re.resort_id )
JOIN reservedresourcebase rsv ON (rsv.resource_id=re.resource_id)
JOIN reservation rv ON ( rv.resort_id = re.resort_id )
JOIN admin_organisation ao ON ( ao.admin_organisation_id = r.admin_organisation_id )
WHERE
rsv.type = 'producttype'
) select * from cte where rn=1
使用子查询
select * from (SELECT
row_number() over(partition by r.name,rsv.name order by rsv.reservation_date desc) rn,
r.name AS resort_name,
rsv.name AS resource_name,
rsv.reservation_date,
rv.arrival_date
FROM
resorti18n r
JOIN resourcebasei18n re ON ( r.resort_id = re.resort_id )
JOIN reservedresourcebase rsv ON (rsv.resource_id=re.resource_id)
JOIN reservation rv ON ( rv.resort_id = re.resort_id )
JOIN admin_organisation ao ON ( ao.admin_organisation_id = r.admin_organisation_id )
WHERE
rsv.type = 'producttype'
) a where a.rn=1
推荐阅读
- c# - 有没有办法在 Windows C# 中区分 macintosh 或 macOS 文件类型?
- c - 使用向量名称作为指针
- ibm-midrange - As400 db 连接问题(NegativeArraySizeException)
- javascript - React-native:更新Catalina后通过错误进行项目
- hibernate - 为什么当它已经知道目标类型时,hibernate会搜索鉴别器列?
- python - 更新位于其他功能的字典
- c - 在找到圆的区域时获取垃圾值
- python - 如何使 a1、a2 和 a3 在循环中被读取?
- c++ - 加速一个长的 python 代码,该代码被证明只是因为一个块而很慢
- powerbi - 堆叠柱形图在 power bi 中未达到预期