co powinienem zrobić, jeśli chcę również wybrać inne pola z „my_table”? Innymi słowy, inna wartość;
grep
7
co się stanie, jeśli więcej niż jedna wartość pojawi się tyle samo razy (co jest wartością maksymalną)? W takim razie, jeśli trzy pojawiły się również dwukrotnie? LIMIT 1 pokaże tylko jeden rekord
mustafa1993
1
@ mustafa1993SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
Ahmed Syed
dlaczego to nie działa po dodaniu WHERE 'value_occurrence' = 1?
szwajcarski
1
@swisswiss musisz użyć HAVINGzamiast WHEREw tym przypadku.
Nie wiedziałem, że możesz użyć COUNT(*)bezpośrednio w ORDER BY. Wiedziałem, że jest kilka ograniczeń dotyczących GROUP BY/ HAVINGi kolumn zagregowanych i zawsze zakładałem, że to nie zadziała.
Mihai Stancu
21
Rozważmy nazwę tabeli jako, tblpersona nazwę kolumny jako city. Chcę pobrać najczęściej powtarzane miasto z kolumny miasta:
select city,count(*)as nor from tblperson
groupby city
having count(*)=(select max(nor)from(select city,count(*)as nor from tblperson groupby city) tblperson)
+1 za używanie standardowego SQL, który będzie działał w dowolnej bazie danych (podczas gdy LIMIT jest specyficzny dla MySQL, a TOP jest specyficzny dla SQL Server).
Dylan Smith,
7
Poniższe zapytanie wydaje mi się działać dobrze w bazie danych SQL Server:
selectcolumn, COUNT(column)AS MOST_FREQUENT
from TABLE_NAME
GROUPBYcolumnORDERBY COUNT(column)DESC
Wynik:
column MOST_FREQUENT
item1 highest count
item2 second highest
item3 third higest
....
Musisz także przenieść funkcję COUNT do sekcji ORDER BY, aby uniknąć następującego błędu: Na liście wyboru można określić tylko jedno wyrażenie, jeśli podzapytanie nie jest wprowadzone jako EXISTS
Saba Jamalian
1
Zakładając, że tabela to „ SalesLT.Customer”, a kolumna, którą próbujesz obliczyć, to „ CompanyName” i AggCompanyNamejest aliasem.
Select CompanyName, Count(CompanyName)as AggCompanyName from SalesLT.Customer
groupby CompanyName
OrderBy 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:
Odpowiedzi:
Wymień
column
imy_table
. Zwiększ,1
jeśli chcesz zobaczyćN
najczęściej używane wartości w kolumnie.źródło
SELECT * FROM my_table GROUP BY value ORDER BY count(*) DESC;
WHERE 'value_occurrence' = 1
?HAVING
zamiastWHERE
w tym przypadku.Spróbuj czegoś takiego:
źródło
COUNT(*)
bezpośrednio wORDER BY
. Wiedziałem, że jest kilka ograniczeń dotyczącychGROUP BY
/HAVING
i kolumn zagregowanych i zawsze zakładałem, że to nie zadziała.Rozważmy nazwę tabeli jako,
tblperson
a nazwę kolumny jakocity
. Chcę pobrać najczęściej powtarzane miasto z kolumny miasta:Oto
nor
alias.źródło
Poniższe zapytanie wydaje mi się działać dobrze w bazie danych SQL Server:
Wynik:
źródło
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ść)
źródło
Zakładając, że tabela to „
SalesLT.Customer
”, a kolumna, którą próbujesz obliczyć, to „CompanyName
” iAggCompanyName
jest aliasem.źródło
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:
źródło
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:
Wynik:
źródło
Jednym ze sposobów, które lubię używać, jest:
Wybierz ,LICZYĆ() jako VAR1 z Table_Name
Grupuj według
zamówienie VAR1 desc
limit 1
źródło