quelle est la requête sql pour trouver les enregistrements en double et les afficher en ordre décroissant, en fonction du nombre le plus élevé et l'ID afficher les enregistrements.
par exemple:
obtenir le décompte peut être fait avec
select title, count(title) as cnt from kmovies group by title order by cnt desc
et le résultat sera comme
title cnt
ravi 10
prabhu 9
srinu 6
maintenant quelle est la requête pour obtenir le résultat comme ci-dessous:
ravi
ravi
ravi
...10 times
prabhu
prabhu..9 times
srinu
srinu...6 times
Si votre SGBDR prend en charge la clause OVER ...
SELECT
title
FROM
(
select
title, count(*) OVER (PARTITION BY title) as cnt
from
kmovies
) T
ORDER BY
cnt DESC
Vous pouvez le faire en une seule requête:
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
Cette requête utilise le Group By
et et Having
clauses pour vous permettre de sélectionner (localiser et répertorier) pour chaque enregistrement en double. La clause As
est pratique pour faire référence à Quantity
dans les select
et Order By
clauses, mais ne fait pas vraiment partie de l'obtention des lignes en double.
Select
Title,
Count( Title ) As [Quantity]
From
Training
Group By
Title
Having
Count( Title ) > 1
Order By
Quantity desc
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
Vous ne pouvez pas le faire comme une simple requête unique, mais cela ferait:
select title
from kmovies
where title in (
select title
from kmovies
group by title
order by cnt desc
having count(title) > 1
)