web-dev-qa-db-ja.com

重複レコードを見つけるための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
13
Tan

RDBMSがOVER句をサポートしている場合...

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

単一のクエリでそれを行うことができます:

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
6
Charles Bretana
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
1
Manoj

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

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