Łączenie counta i maxa w jednej kwerendzie

0

Witajcie. Mam taką kwerendę

SELECT tabela2.tabela2_id as id_2, count(tabela2.tabela2_id) AS ilosc
FROM tabela1 JOIN tabela2 ON tabela2.tabela2_id =tabela1.tabela1_id 
GROUP BY tabela2.tabela2_id

Które ładnie mi zlicza dane i dostaje coś w stylu:

id_2 | count
1 | 1
2 | 3
3 | 15
4 | 10 

Teraz chciałem wyciągnąć stąd największą wartość, więc przerobiłem kwerendę na:

SELECT MAX(ilosc), id_2 FROM
(
SELECT tabela2.tabela2_id as id_2, count(tabela2.tabela2_id) AS ilosc
FROM tabela1 JOIN tabela2 ON tabela2.tabela2_id =tabela1.tabela1_id 
GROUP BY tabela2.tabela2_id
) naj

Wyświetla mi maksymalną prawidłową, ale złe id. Zamiast

MAX(ilosc) | id_2
15 | 3 

jest

MAX(ilosc) | id_2
15 | 1 

Możecie coś podpowiedzieć? O czym zapomniałem? Wiem że można dać sortowanie i limit 1, ale zależy mi na użyciu tego maxa.

0

Pisalem to na komorce na w3 fools schools.

W 2 listingu brak Ci WHERE, wiec wypisuje tylko 1 rekord

 
SELECT o.OrderDetailID 
FROM OrderDetails as o, 
( SELECT MAX(Quantity) as max_val FROM OrderDetails) AS q
WHERE quantity = q.max_val
0
SELECT TOP 1 
    tabela2.tabela2_id         AS id_2 
    ,Count(tabela2.tabela2_id) AS ilosc 
FROM   
    tabela1 
    JOIN tabela2 ON tabela2.tabela2_id = tabela1.tabela1_id 
GROUP  BY 
    tabela2.tabela2_id 
ORDER BY
    2 DESC
0

Nie wiem po co założenie, użycia max, ale można tak:

select 
	* 
from (select 
		id
		, count(id) ile 
	from 
		tabela2 
	group by 
		id) as dt
where 
	ile in (select 
				max(ile) 
			from (select 
					count(id) ile 
				from 
				     tabela2 
			    group by 
				    id) as dt1
			)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.