2010-09-24 5 views
1

Dans la base de données, des valeurs de colonne apparaissent sur plusieurs lignes. Les lignes d'exemple sont les suivantes (en format .csv):comment sélectionner les éléments les plus fréquents de la base de données?

AFAB19476C2CEEEE101FFA45FD207BA8B6185B29,539EE0643AFC3A3BE3D20DC6BE7D5376DC536D34,9800,58,29,24,34,2 
A801DA9B2F4116A7A1B14A13532B2177C7436C43,91850E4C50536D45C9CEAFE5FB5B3A87154EB754,9800,15,15,15,15,1 
4C1E0B5387FB7FE19FC1ED682D0EB08249779180,9B17AE806C79437945F99C054B59A859D5639D11,9800,51,51,51,51,1 
5B83A4BE4161497C62471BF133A4E1AD905D25F8,BFF4CED4F54F221A76714B311623398070847B26,9800,71,71,71,71,1 
145145E49302ABBEEFF2797CAA8E122FFD3D5BFD,0C287F08E8E11DB4CF10CEB5801EBD61E7664FE4,9800,55,55,55,55,1 
99C1F96461BC870574D002034F001BA3F96A9AB5,2EC4F3158764DC07D981008B3054B97809A0B048,Tujina,34,34,34,34,1 
**CCB433630C735A8DA1B7828C10820B8CF91F25B9**,2C9C297BEF9CC1C0CF16A0559DE828FA0E226698,9817,339,169,137,202,2 
BF2A7F0A9AD762B46A4423F76BF0479B9A72F163,336FB392EA4EF85EFE2563332CDE7D32FCE711B2,9800,34,34,34,34,1 
... 
**CCB433630C735A8DA1B7828C10820B8CF91F25B9**,C4015FE337F1EEFA1ECE4143D77F9627BEB9D358,9800,464,464,464,464,1 
**CCB433630C735A8DA1B7828C10820B8CF91F25B9**,0EC08D78C637EF0A05E858B2BAC85C3EF05DF959,9800,73,73,73,73,1 

Dans cet exemple, la valeur CCB433630C735A8DA1B7828C10820B8CF91F25B9 apparaît dans trois lignes en combinaison avec des valeurs différentes.

Je cherche un moyen de compter dans combien de lignes la valeur de la 1ère colonne apparaît et ensuite ordonner les valeurs par le nombre de lignes qui contiennent cette valeur.

Par exemple, seulement la valeur de la première ligne a été vérifié la requête serait la suivante

SELECT COUNT (*) FROM records WHERE column_1 = 'AFAB19476C2CEEEE101FFA45FD207BA8B6185B29' 

mais au lieu d'un premier rang les valeurs de toutes les lignes doivent être vérifiés.

Je serais très reconnaissant si quelqu'un d'entre vous pourrait suggérer une instruction de requête SQL appropriée ou une fonction pour trier toutes les valeurs de la première colonne par le nombre de répétitions.

Merci!

Répondre

2
SELECT column_1, COUNT(*) 
FROM records 
GROUP BY column_1 
ORDER BY COUNT(*) DESC 
+0

+1 pour ne pas utiliser l'alias de position de colonne dans l'ordre 'by' J'aime alias de position pour un arrêt des requêtes, mais trouvent qu'ils sont moins claires dans le code de production. Et l'utilisation de 'count (*)' pour compter les lignes. –

1

Ce qui suit va vous montrer les comptes de toutes les valeurs colonne1, ordonnées dans l'ordre croissant:

select column_1, count(*) 
from records 
group by column_1 
order by 2 asc 
1

Would quelque chose comme ce travail?

SELECT column_1, COUNT(column_2) 
FROM records 
GROUP BY column_1 
ORDER BY COUNT(column_2) DESC 
Questions connexes