[psql] Есть ли хаки чтобы вытаскивать id соответствующий max(val)?
А если строчек с таковым value несколько? Что тогда ты хочешь получить?
нету.
А если строчек с таковым value несколько? Что тогда ты хочешь получить?таблицу с ними?
база какая?
ps
кошерное решение - это через аналитические функции (но их должна база держать)
ps
кошерное решение - это через аналитические функции (но их должна база держать)
А что дальше с ними делать? Я не думаю, что это таблица представляет какой-либо интерес сама по себе.
Здесь варианта два, на мой взгляд. Либо эти записи как-то обрабатываются, тогда логичнее будет написать что-то типа
Либо подразумевается, что такая запись гарантированно одна. Но тогда, какая принципиальная разница между id и value? При создании уникального индекса по value скорость работы запросов с join-ами будет ровно такой же.
Здесь варианта два, на мой взгляд. Либо эти записи как-то обрабатываются, тогда логичнее будет написать что-то типа
selec max(value) to max_value from table
update table set ...=... where value=%max_value%
Либо подразумевается, что такая запись гарантированно одна. Но тогда, какая принципиальная разница между id и value? При создании уникального индекса по value скорость работы запросов с join-ами будет ровно такой же.
база portgreslq,
нужных аналитических функций не нашел, зато нашел вот что:
User-Defined Aggregates.
адская штука и если будет желание, можно сделать то, что надо.
нужных аналитических функций не нашел, зато нашел вот что:
User-Defined Aggregates.
адская штука и если будет желание, можно сделать то, что надо.
Либо подразумевается, что такая запись гарантированно одна. Но тогда, какая принципиальная разница между id и value? При создании уникального индекса по value скорость работы запросов с join-ами будет ровно такой же.value естественно не уникальны.
ключ и именно он нужен, чтобы потом по нему отсортировать.
в идеале подразумевается, что берется минимальный, если с одним и темже value их несколько
( но в принципе на это условие забить).
спасибо, не видел такого. там даже есть подходящее решение, но работает только под оракл.
да, на всякий случай, чтобы камнями не кидали - в заголовке указана база )
да, на всякий случай, чтобы камнями не кидали - в заголовке указана база )
Я, типа, не шарю особо, но мне интересно — может кто-нибудь аргументировать почему так нельзя:
ы?
select value, a, b, c from t
where value = (select max(value) from t)
ы?
ЗЫМожет, поэтому?
способы с джойнами и субселектами не предлагать - и сам так умею
А где у тебя группировка?
Оставить комментарий
SCIF32
то есть есть таблицаcreate table (id , ref_id, value)
хочется иметь на выходе
select id /* соответствующий ряду с выбранным max(value)*/, max(value) from table group by ref_id
вроде задача - дикий боян, но ничего путного найти не получилось.
ЗЫ
способы с джойнами и субселектами не предлагать - и сам так умею