Jak znaleźć najczęstszą wartość w danej kolumnie w tabeli SQL?
Na przykład dla tej tabeli powinna zostać zwrócona, two
ponieważ jest to najczęstsza wartość:
one
two
two
three
Jak znaleźć najczęstszą wartość w danej kolumnie w tabeli SQL?
Na przykład dla tej tabeli powinna zostać zwrócona, two
ponieważ jest to najczęstsza wartość:
one
two
two
three
Odpowiedzi:
SELECT `column`,
COUNT(`column`) AS `value_occurrence`
FROM `my_table`
GROUP BY `column`
ORDER BY `value_occurrence` DESC
LIMIT 1;
Wymień column
i my_table
. Zwiększ, 1
jeśli chcesz zobaczyć N
najczęściej używane wartości w kolumnie.
SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1
?
HAVING
zamiast WHERE
w tym przypadku.
Spróbuj czegoś takiego:
SELECT `column`
FROM `your_table`
GROUP BY `column`
ORDER BY COUNT(*) DESC
LIMIT 1;
COUNT(*)
bezpośrednio w ORDER BY
. Wiedziałem, że jest kilka ograniczeń dotyczących GROUP BY
/ HAVING
i kolumn zagregowanych i zawsze zakładałem, że to nie zadziała.
Rozważmy nazwę tabeli jako, tblperson
a nazwę kolumny jako city
. Chcę pobrać najczęściej powtarzane miasto z kolumny miasta:
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)
Oto nor
alias.
Poniższe zapytanie wydaje mi się działać dobrze w bazie danych SQL Server:
select column, COUNT(column) AS MOST_FREQUENT
from TABLE_NAME
GROUP BY column
ORDER BY COUNT(column) DESC
Wynik:
column MOST_FREQUENT
item1 highest count
item2 second highest
item3 third higest
..
..
Do użytku z SQL Server.
Ponieważ nie ma w tym obsługi poleceń limitu.
Możesz użyć pierwszego polecenia, aby znaleźć maksymalną występującą wartość w danej kolumnie w tym przypadku (wartość)
SELECT top1
`value`,
COUNT(`value`) AS `value_occurrence`
FROM
`my_table`
GROUP BY
`value`
ORDER BY
`value_occurrence` DESC;
Zakładając, że tabela to „ SalesLT.Customer
”, a kolumna, którą próbujesz obliczyć, to „ CompanyName
” i AggCompanyName
jest aliasem.
Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer
group by CompanyName
Order By Count(CompanyName) Desc;
Jeśli nie możesz użyć LIMIT lub LIMIT nie jest opcją dla twojego narzędzia do wysyłania zapytań. Zamiast tego możesz użyć „ROWNUM”, ale będziesz potrzebować zapytania podrzędnego:
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
zamiast tego; składnia jest pokazana w zaakceptowanej odpowiedzi.
Jeśli masz kolumnę ID i chcesz znaleźć najbardziej powtarzalną kategorię z innej kolumny dla każdego identyfikatora, możesz użyć poniższego zapytania,
Stół:
Pytanie:
SELECT ID, CATEGORY, COUNT(*) AS FREQ
FROM TABLE
GROUP BY 1,2
QUALIFY ROW_NUMBER() OVER(PARTITION BY ID ORDER BY FREQ DESC) = 1;
Wynik: