powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Исключение строк по условию максимального значения.
8 сообщений из 8, страница 1 из 1
Исключение строк по условию максимального значения.
    #35774890
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
...
Рейтинг: 0 / 0
Исключение строк по условию максимального значения.
    #35775063
Nesco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge73, Я не знаком с PostgreSQL. На стандартном SQL возможно будет выглядеть так.

SELECT *
FROM Sales a
WHERE a.dat =
(SELECT MAX(dat)
FROM Sales b
WHERE a.tov=b.Tov);

Только на меня не полагайтесь, сами проверьте, я пока только ученик. Думаю, спецы поправят мои ошибки. Самому интересно, может есть ещё какие-нибудь способы.
...
Рейтинг: 0 / 0
Исключение строк по условию максимального значения.
    #35775086
VxS_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 делает.
...
Рейтинг: 0 / 0
Исключение строк по условию максимального значения.
    #35775089
Serge73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VxS_,
Прошу прощения, конечно 20.01.2009. Три раза перепроверил, и все равно ошибся. Писал ночь и т.п. ...

Правильный вариант:

Дата Товар Цена
________________________

03.01.2009 Ведро 14
20.01.2009 Грабли 10
03.01.2009 Лопата 10
03.01.2009 Лом 18
...
Рейтинг: 0 / 0
Исключение строк по условию максимального значения.
    #35775092
VxS_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge73,
Все равно ничего не понял :). видимо сегодня не мой день. Если сделать выборку по последней дате, то должно получиться:

Дата Товар Цена
________________________
20.01.2009 Грабли 8

т.к. во всех других записях дата меньше данной.
...
Рейтинг: 0 / 0
Исключение строк по условию максимального значения.
    #35775150
Serge73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...


Ругается блин.
...
Рейтинг: 0 / 0
Исключение строк по условию максимального значения.
    #35775155
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Исключение строк по условию максимального значения.
    #35775229
Serge73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
Очень помогли.

Может кому-нибудь понадобится правильное написание запроса с переименование таблицы:

SELECT
t1.dat,
t1.tov,
t1.summa
FROM
public.sales t1
GROUP BY
dat,
tov,
summa
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Исключение строк по условию максимального значения.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]