按计数逐列选择多个列

时间:2012-09-27 06:15:11

标签: sql

我在Oracle中有以下数据集:

c1   c2   c3
1A2  cat  black
1G2  dog  red
B11  frog green
1G2  girl  red

尝试获得以下结果。基本上我试图先获得带有重复c1的行。

c1   c2   c3
1G2  dog  red
1G2  girl  red
B11  frog green
1A2  cat  black

从t1组中选择c1,按c1顺序计数(*)desc,但不是如何继续。

3 个答案:

答案 0 :(得分:4)

试试这个:

这几乎适用于所有RDBMS

SELECT  t.c1, t.c2,t.c3 
FROM    your_table t
JOIN(
        select c1,count(*) as cnt from your_table
        group by c1 )a
ON      a.c1=t.c1
ORDER BY a.cnt desc,t.c2,t.c3


SQL Fiddle Demo

答案 1 :(得分:0)

从列c1获取所有重复项可以通过简单的排序来实现:

SELECT * FROM <table> ORDER BY C1 ASC

答案 2 :(得分:0)

select c1,c2,c3
from tbl
order by count(*) over (partition by c1) desc