|
|
|
Исключение строк по условию максимального значения.
|
|||
|---|---|---|---|
|
#18+
Помогите с запросом SELECT в Postgresql 8.2. Есть таблица Дата Товар Цена ________________________ 01.01.2009 Ведро 15 02.01.2009 Ведро 16 03.01.2009 Ведро 14 03.01.2009 Грабли 7 10.01.2009 Грабли 10 20.01.2009 Грабли 8 01.01.2009 Лопата 20 02.01.2009 Лопата 16 03.01.2009 Лопата 10 03.01.2009 Лом 18 Нужно получить строки Товара с Ценой по последней дате, остальные убрать. Должна получиться следующая таблица: Дата Товар Цена ________________________ 03.01.2009 Ведро 14 10.01.2009 Грабли 10 03.01.2009 Лопата 10 03.01.2009 Лом 18 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2009, 21:49 |
|
||
|
Исключение строк по условию максимального значения.
|
|||
|---|---|---|---|
|
#18+
Serge73, Я не знаком с PostgreSQL. На стандартном SQL возможно будет выглядеть так. SELECT * FROM Sales a WHERE a.dat = (SELECT MAX(dat) FROM Sales b WHERE a.tov=b.Tov); Только на меня не полагайтесь, сами проверьте, я пока только ученик. Думаю, спецы поправят мои ошибки. Самому интересно, может есть ещё какие-нибудь способы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2009, 02:23 |
|
||
|
Исключение строк по условию максимального значения.
|
|||
|---|---|---|---|
|
#18+
Serge73Помогите с запросом SELECT в Postgresql 8.2. Есть таблица Дата Товар Цена ________________________ 01.01.2009 Ведро 15 02.01.2009 Ведро 16 03.01.2009 Ведро 14 03.01.2009 Грабли 7 10.01.2009 Грабли 10 20.01.2009 Грабли 8 01.01.2009 Лопата 20 02.01.2009 Лопата 16 03.01.2009 Лопата 10 03.01.2009 Лом 18 Нужно получить строки Товара с Ценой по последней дате, остальные убрать. Должна получиться следующая таблица: Дата Товар Цена ________________________ 03.01.2009 Ведро 14 10.01.2009 Грабли 10 03.01.2009 Лопата 10 03.01.2009 Лом 18 Ничего не понял. У вас последняя дата разеве не 20.01.2009 ?? Почему результат такой странный.... Или вы имеете ввиду дату в последней записи в выборке? тогда тоже странно, должны быть все записи за 03.01.2009 (и то при условии, что эта строка в выборке будет последней, это не обязательно так), а там что-то 10.01.2009 делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2009, 05:46 |
|
||
|
Исключение строк по условию максимального значения.
|
|||
|---|---|---|---|
|
#18+
VxS_, Прошу прощения, конечно 20.01.2009. Три раза перепроверил, и все равно ошибся. Писал ночь и т.п. ... Правильный вариант: Дата Товар Цена ________________________ 03.01.2009 Ведро 14 20.01.2009 Грабли 10 03.01.2009 Лопата 10 03.01.2009 Лом 18 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2009, 06:29 |
|
||
|
Исключение строк по условию максимального значения.
|
|||
|---|---|---|---|
|
#18+
Serge73, Все равно ничего не понял :). видимо сегодня не мой день. Если сделать выборку по последней дате, то должно получиться: Дата Товар Цена ________________________ 20.01.2009 Грабли 8 т.к. во всех других записях дата меньше данной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2009, 06:36 |
|
||
|
Исключение строк по условию максимального значения.
|
|||
|---|---|---|---|
|
#18+
NescoSerge73, Я не знаком с PostgreSQL. На стандартном SQL возможно будет выглядеть так. SELECT * FROM Sales a WHERE a.dat = (SELECT MAX(dat) FROM Sales b WHERE a.tov=b.Tov); Спасибо, прокатило. К сожалению в моем учебнике про возможность задать новое имя таблицы (FROM Sales a) ни слова. А как правильно написать новое имя для следующей комбинации? FROM table1 new_name_tab1 INNER JOIN table2 ON (table1.id = table2.idref) new_name_tab2 GROUP BY ... Ругается блин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2009, 10:45 |
|
||
|
Исключение строк по условию максимального значения.
|
|||
|---|---|---|---|
|
#18+
FROM table1 new_name_tab1 INNER JOIN table2 new_name_tab2 ON (new_name_tab1.id = new_name_tab2.idref) GROUP BY ... PS: называть алиасы лучше более короткими именами. t1, nt2 - чтобы меньше писать и чтобы в запросе сразу было понятно, что это не имя объекта в БД, а алиас в секции FROM FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.idref ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2009, 10:55 |
|
||
|
Исключение строк по условию максимального значения.
|
|||
|---|---|---|---|
|
#18+
Спасибо! Очень помогли. Может кому-нибудь понадобится правильное написание запроса с переименование таблицы: SELECT t1.dat, t1.tov, t1.summa FROM public.sales t1 GROUP BY dat, tov, summa ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2009, 12:46 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35775086&tid=1543472]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 488ms |

| 0 / 0 |
