Come posso trovare il valore più frequente in una data colonna in una tabella SQL?
Ad esempio, per questa tabella dovrebbe restituire two
poiché è il valore più frequente:
one
two
two
three
Come posso trovare il valore più frequente in una data colonna in una tabella SQL?
Ad esempio, per questa tabella dovrebbe restituire two
poiché è il valore più frequente:
one
two
two
three
Risposte:
SELECT `column`,
COUNT(`column`) AS `value_occurrence`
FROM `my_table`
GROUP BY `column`
ORDER BY `value_occurrence` DESC
LIMIT 1;
Sostituisci column
e my_table
. Aumenta 1
se vuoi vedere i N
valori più comuni della colonna.
SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1
?
HAVING
posto di WHERE
in questo caso.
Prova qualcosa come:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
COUNT(*)
direttamente nel file ORDER BY
. Sapevo che c'erano alcune restrizioni riguardanti GROUP BY
/ HAVING
e le colonne aggregate e ho sempre pensato che non avrebbe funzionato.
Consideriamo il nome della tabella come tblperson
e il nome della colonna come city
. Voglio recuperare la città più ripetuta dalla colonna della città:
select city,count(*) as nor from tblperson
group by city
having count(*) =(select max(nor) from
(select city,count(*) as nor from tblperson group by city) tblperson)
Ecco nor
un nome alias.
La query seguente sembra funzionare bene per me nel database di SQL Server:
select column, COUNT(column) AS MOST_FREQUENT
from TABLE_NAME
GROUP BY column
ORDER BY COUNT(column) DESC
Risultato:
column MOST_FREQUENT
item1 highest count
item2 second highest
item3 third higest
..
..
Da utilizzare con SQL Server.
Poiché non esiste alcun supporto per il comando limite in questo.
Puoi utilizzare il comando in alto 1 per trovare il valore massimo che si verifica nella colonna specifica in questo caso (valore)
SELECT top1
`value`,
COUNT(`value`) AS `value_occurrence`
FROM
`my_table`
GROUP BY
`value`
ORDER BY
`value_occurrence` DESC;
Supponendo che la tabella sia " SalesLT.Customer
" e la colonna che stai cercando di capire sia " CompanyName
" ed AggCompanyName
è un alias.
Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
Se non puoi utilizzare LIMIT o LIMIT non è un'opzione per il Query Tool. Puoi invece utilizzare "ROWNUM", ma avrai bisogno di una sottoquery:
SELECT FIELD_1, ALIAS1
FROM(SELECT FIELD_1, COUNT(FIELD_1) ALIAS1
FROM TABLENAME
GROUP BY FIELD_1
ORDER BY COUNT(FIELD_1) DESC)
WHERE ROWNUM = 1
ROWNUM
LIMIT 1
invece; la sintassi è mostrata nella risposta accettata.
Se hai una colonna ID e desideri trovare la categoria più ripetitiva da un'altra colonna per ogni ID, puoi utilizzare la query sottostante,
Tavolo:
Query:
SELECT ID, CATEGORY, COUNT(*) AS FREQ
FROM TABLE
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FREQ DESC) = 1;
Risultato: