首先在sql server中显示最重复的列

时间:2014-04-08 21:12:14

标签: sql sql-server

提前致谢。
我想首先显示具有最多重复值的列,如下所示

col1    col2
1        A
1        B
1        C
1        D
2        A
2        B
2        C
4        D
4        E
3        A

在'col1'中,因为'1'重复四次,它应该首先重复,'2'重复三次,它是第二次。 需要编写sql查询才能得到这个结果。 请帮帮我。

3 个答案:

答案 0 :(得分:2)

假设SQL Server 2005或更新版本,您可以使用OVER()子句:

SELECT * 
FROM  Table1
ORDER BY COUNT(*) OVER (PARTITION BY col1) DESC

演示:SQL Fiddle

答案 1 :(得分:1)

我建议你这个解决方案:

WITH temp AS (
  SELECT col1, count(col2) nb_occurences
  FROM tab
  GROUP BY
    col1)


SELECT
  tab.col1, tab.col2, nb_occurences
FROM tab
INNER JOIN
  temp
    ON temp.col1 = tab.col1
ORDER BY nb_occurences DESC

我希望这会对你有所帮助:)。

祝你好运

答案 2 :(得分:0)

SELECT   col1
FROM     (SELECT   col1, COUNT(*) AS cnt
          FROM     my_table
          GROUP BY col1) t
ORDER BY cnt DESC