2011-07-21 14 views
12

重複するレコードを見つけて降順で表示するSQLクエリは何ですか、最高のカウントに基づいて、idはレコードを表示します。例えばsqlのクエリは、重複するレコードを見つける

はカウントが

select title, count(title) as cnt from kmovies group by title order by cnt desc 

で行うことができます取得し、その結果は現在以下のような結果を得るために、クエリが何であるかを

title cnt 

ravi 10 
prabhu 9 
srinu 6 

のようになります。

ravi 
ravi 
ravi 
...10 times 
prabhu 
prabhu..9 times 
srinu 
srinu...6 times 
+0

RDBMSとは何ですか? – gbn

答えて

16

.. 。

SELECT 
    title 
FROM 
    (
    select 
     title, count(*) OVER (PARTITION BY title) as cnt 
    from 
     kmovies 
    ) T 
ORDER BY 
    cnt DESC 
+0

それは素晴らしい仕事をしました。 – Tan

0

あなたは、単純な単一のクエリとしてそれを行うことはできませんが、これはどうなる:

select title 
from kmovies 
where title in (
    select title 
    from kmovies 
    group by title 
    order by cnt desc 
    having count(title) > 1 
) 
+1

これは、COUNT(*)の降順で行を繰り返さないため、正しい結果を得られません。これは*最外* ORDER BYではないので、順序は無関心です。そして、1つのクエリソリューションで2つの他の答えがあります – gbn

5

あなたは、単一のクエリでそれを行うことができます:あなたのRDBMSは、OVER句をサポートしている場合

Select t.Id, t.title, z.dupCount 
From yourtable T 
Join 
    (select title, Count (*) dupCount 
    from yourtable 
    group By title 
    Having Count(*) > 1) z 
    On z.title = t.Title 
order By dupCount Desc 
1
select distinct title, (
       select count(title) 
       from kmovies as sub 
       where sub.title=kmovies.title) as cnt 
from kmovies 
group by title 
order by cnt desc 
3

このクエリを使用すると、(LOCを選択できるようにGroup Byを使用し、かつHaving句それぞれの重複したレコードごとに) As句は、とOrder By句のQuantityを参照するのが便利ですが、実際には重複した行を取得するわけではありません。

Select 
    Title, 
    Count(Title) As [Quantity] 
    From 
    Training 
    Group By 
    Title 
    Having 
    Count(Title) > 1 
    Order By 
    Quantity desc