【问题标题】:max(count) from inner query using row_number()使用 row_number() 来自内部查询的 max(count)
【发布时间】:2021-12-17 04:54:29
【问题描述】:

我正在尝试选择在我的内部查询中具有最大计数的src_cd:

select count(*), src_cd 
from innertable1 
group by src_cd

上述查询的结果是:

cnt src_cd
100 CCC
90 BBB
80 AAA

从上面的结果我想做一个

select * 
from table1 
where src_cd having max(cnt of src_cd from innertable1)

我也想用row_number() 来选择第二个最大值,第三个最大值等等

【问题讨论】:

  • Why should I "tag my RDBMS"? - 请添加标签以指定您使用的是 mysql、postgresql、sql-server、oracle 还是 db2 - 或其他完全不同的东西。跨度>
  • rdbms/database/tool 是 impala。我觉得够了。

标签: sql hadoop count impala row-number


【解决方案1】:

您可以使用 limit 1 和 order by 来选择最大的。

select count(*), src_cd 
from innertable1 
group by src_cd
order by 1 desc
limit 1

Order by 将按计数的降序排列。 限制将拾取第一行。

您还可以使用子查询使用row_number() 计算下一个最大行数。

select src_cd as second_max
from (
select src_cd, row_number() over( order by cnt desc) as rownum
from (
select count(*) cnt, src_cd 
from innertable1 
group by src_cd
)rs
) rs2
where rownum=2 -- second MAX

【讨论】:

  • 感谢@Koushik Roy,使用 row_number() 的查询有所帮助。下面是我如何使用select * from table1 where src_cd = (select src_cd as second_max from ( select src_cd, row_number() over( order by cnt desc) as rownum from ( select count(*) cnt, src_cd from innertable1 group by src_cd )rs ) rs2 where rownum=2)
猜你喜欢
  • 2019-07-24
  • 2012-12-26
  • 2011-12-11
  • 1970-01-01
  • 2019-10-23
  • 2020-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多