sql如何按某一列中元素出现从多到少排名?

lovery99 2013-11-20 10:35:14
比如我的数据表是:
列1 列2
A 5
B 3
A 7
B 5
A 1
按照列1元素出现次数排名,比如上面A出现了3次,B出现了2次,那么想输出(A,3)(B,2)这种信息,请问应该怎么查询?谢谢
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
NIan_jun 2013-11-20
  • 打赏
  • 举报
回复
with  t as(
select 'a' a ,1 b from dual 
union all 
select 'a',3 from dual 
union all 
select 'a',5 from dual
 union all 
select 'b',1 from dual
 union all 
select 'b',2 from dual 
)
select a,b,count(*)over(partition by a) c from t order by c desc 
CT_LXL 2013-11-20
  • 打赏
  • 举报
回复
SELECT '(' || T2.ID || ',' || T2.CNT || ')' COL
  FROM (SELECT T.ID, COUNT(1) CNT
          FROM TB2 T
         GROUP BY T.ID
         ORDER BY COUNT(1) DESC) T2;
moonoos123 2013-11-20
  • 打赏
  • 举报
回复
select 列1,count(*) from tab1 group by 列1 order by count(*) desc; 忘记升序了~~
moonoos123 2013-11-20
  • 打赏
  • 举报
回复
select 列1,count(*) from tab1 group by 列1; 我是感觉你需要的不是这么简单,你可以再写的详细点,我理解的是这样~~

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧