-- Można skopiować i wgrać. UWAGA KASUJE TABELE O NAZWIE aa !
drop table if exists aa;
create table aa(id integer , b integer , c integer );
insert into aa values (1,2,4);
insert into aa values (2,2,3);
insert into aa values (3,2,6);
insert into aa values (4,4,5);
insert into aa values (5,4,12);
insert into aa values (6,4,1);
insert into aa values (7,4,5);
insert into aa values (8,4,12);
--
-- chcę zapytanie które zwróci dwa wiersze
--
-- 3,2,6
-- 5,4,12
-- tzn pogrupownaie po b i maximum po c
--
-- coś takiego zwraca taki wynik i jest ok
select ta.id,ta.b,ta.c from aa ta, (
select b,max( c ) as max from aa
group by b asc
) as t
where ta.b=t.b and ta.c=t.max
group by ta.b ;
-- coś takiego zwraca taki wynik ale tu należy zakładać że system bazodanowy wybierze
-- przy grupowniau "pierwszy wiersz" (i dla max ten jest już przygotowany w podzapytaniu FROM)
select t.id,t.b,t.max from(
select id,b,max( c ) as max from aa
group by b asc, c desc
) as t
group by b ;
-- a pytanie moje dlaczego to nie działa i jak to działa
select id, b,c from aa group by b,c having c=max( c );
-- dziekuję za pomoc ;