use*_*441 15 sql oracle subquery max aggregate-functions
我是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); 
Run Code Online (Sandbox Code Playgroud)
因此内部查询完美地工作并返回两个结果.现在我有这两个值,我试图弄清楚如何返回具有membership_count最大值的行,这是我一直卡住的地方.在上面的查询中,我尝试在where子句中使用MAX()但在select中我不断得到错误'table not found'(意思是'g').所以我的问题是如何在子查询的结果上使用MAX()函数?任何想法或建议将不胜感激!!!!!
Boh*_*ian 12
您不需要查找最大值的子查询.
相反,; 订购行后   你只需要第一行:
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
Run Code Online (Sandbox Code Playgroud)
        你可以尝试类似的东西
 SELECT membership.mem_desc,membership.mem_max_rentals,membership_history.mem_type, membership_count, rank() over ORDER BY membership_count DESC as ranky
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)
) 
WHERE ranky =1;
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           72166 次  |  
        
|   最近记录:  |