gpt4 book ai didi

sql - 如何在子查询结果上使用MAX()?

转载 作者:行者123 更新时间:2023-12-03 20:30:52 28 4
gpt4 key购买 nike

我是Oracle和SQL世界的新手。我的查询中有一个小问题,我一生无法解决,我花了几个小时尝试不同的方法,但无法获得预期的结果。所以这是我的查询:

SELECT *
from(Select membership.mem_desc,membership.mem_max_rentals,membership_history.mem_type,
count(membership_history.MEM_TYPE) as membership_count
from membership_history
JOIN membership ON membership.mem_type = membership_history.mem_type
group by (membership_history.mem_type,membership.mem_desc,membership.mem_max_rentals)
) g
WHERE g.membership_count = (select MAX(membership_count) from g);


因此,内部查询可以完美地工作并返回两个结果。现在,我拥有了这两个值,我试图找出如何返回具有最大Membership_count值的行,这是我不断陷入困境的地方。在上面的查询中,我尝试在where子句中使用MAX(),但在该选择内,我不断收到错误“找不到表”(意思是“ g”)。所以我的问题是如何在子查询的结果上使用MAX()函数?任何想法或建议将不胜感激!

最佳答案

您不需要找到最大值的子查询。
相反,您只需要在对行进行排序之后就需要第一行:

select * from (
select
membership.mem_desc,
membership.mem_max_rentals,
membership_history.mem_type,
count(membership_history.MEM_TYPE) as membership_count
from membership_history
JOIN membership ON membership.mem_type = membership_history.mem_type
group by (membership_history.mem_type,membership.mem_desc,membership.mem_max_rentals)
ORDER BY 4 DESC -- Added this line
) g
WHERE ROWNUM = 1. -- Added this line

关于sql - 如何在子查询结果上使用MAX()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182700/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com