[sql] выбрать в каждой группе минимальный
бд то какая?
в твоём случае это будет что-то вроде
в HAVING вроде нельзя окна использовать
SELECT a, c
FROM (SELECT ROW_NUMBER OVER (PARTITION BY a ORDER BY b) AS r, a, c
FROM tabl) tt
WHERE r = 1
в HAVING вроде нельзя окна использовать
left join наше всё 

sqlite> select q.a, q.c from x q left join x w on (q.a = w.a and q.b > w.b) where w.a is null;
a c
1 b
2 g
3 k
4 p
T-SQL
min(b)
max(b)
Правда я надеюсь у тебя пара столбцов а и б уникальна, иначе все будет некорректно работать.
min(b)
select a, (select c from #Temp e where a = t.a and b = t.b)
from (
select c.a a, min(c.b) b
from #temp c
group by c.a) t
max(b)
select a, (select c from #Temp e where a = t.a and b = t.b)
from (
select c.a a, max(c.b) b
from #temp c
group by c.a) t
Правда я надеюсь у тебя пара столбцов а и б уникальна, иначе все будет некорректно работать.
ну так неззя же! 
только если PK по a, b составлен

только если PK по a, b составлен
че нельзя? не понял
ну сейчас у тебя они допустим уникальны, через месяц если накидают значений других, и свалится твой запрос. 

Сильно дорогой запрос имхо.
ну топикстатер не указал про уникальность, а я прдположил )
В таком случает можно чуть чуть изменить запрос, добавить min или max
либо так, где выведутся все минимальные значения.
В таком случает можно чуть чуть изменить запрос, добавить min или max
select a, (select min(c) from #Temp e where a = t.a and b = t.b)
from (
select c.a a, min(c.b) b
from #temp c
group by c.a) t
либо так, где выведутся все минимальные значения.
select t.a, p.c
from (
select c.a a, min(c.b) b
from #temp c
group by c.a) t join #temp p on t.a= p.a and t.b = p.b
Оставить комментарий
yolki
есть таблица (a,b,c)нужно сгруппировать по a, упорядочить по b и взять первый c.
типа такого:
результат:
другими словами:
сгруппировать по a, в каждой группе выбрать минимальный b и выдать соответствующий ему c.
то же с максимальным b