powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выборка значений по максимальной дате
25 сообщений из 60, страница 1 из 3
Выборка значений по максимальной дате
    #36647334
Phricker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Существует таблица pay
idpdateidentsumm...101.01.2010jasp10...221.03.2010alex15...316.08.2009jasp15...401.10.2009julia20...504.12.2009alex30...

Мне необходимо выбрать строки по каждому ident с максимальной датой.

Пишу запрос:
Код: plaintext
1.
2.
3.
4.
SELECT summ, 
ident,
MAX (pdate)
FROM pay
GROUP BY (summ, ident)

Но все равно выдает все строки...

Где моя ошибка?
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36647343
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
SELECT * FROM pay
WHERE (id, pdate) IN
   (SELECT id, MAX(pdate) FROM pay
    GROUP BY id)
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36647364
Phricker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже самое. выдает все значения.
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36647383
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry, ошибся.
Вместо ID нужно поставить IDENT
Код: plaintext
1.
2.
3.
SELECT * FROM pay
WHERE (ident, pdate) IN
   (SELECT ident, MAX(pdate) FROM pay
    GROUP BY ident)
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36647387
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Phrickerтоже самое. выдает все значения.

GROUP BY id ent
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36647468
xx_xx_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
select ident, max(pdate), sum(summ) keep(dense_rank first order by pdate desc)
from pay
group by ident
хотя может и не то....
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36647478
Coolibin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только нужно решить, что делать со случаем, когда на максимальную дату есть несколько записей.
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36647873
Phricker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое.
Все получилось.
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36647875
Phricker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CoolibinТолько нужно решить, что делать со случаем, когда на максимальную дату есть несколько записей.
не суть важно. нужна именно дата последнего платежа. чтобы отследить активность.
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36648001
Data Type
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PhrickerCoolibinТолько нужно решить, что делать со случаем, когда на максимальную дату есть несколько записей.
не суть важно. нужна именно дата последнего платежа. чтобы отследить активность.

Если у вас дата со временем, то подойдет и первый вариант, если без времени, то через first функцию
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36648060
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Data TypeЕсли у вас дата со временемВ данных либо могут быть повторы либо не могут. Единственным зыбким подтверждением может служить констрейнт, но не предположения разработчика или уверения бизнес-аналитика. Поэтому вопрос только по требованиям к результату, но не к степени дискретизации исходных данных.
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36648183
Data Type
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

Хотя вы правы, в постановке задачи не сказано про целостность данных, что просил автор, то и предложили.
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #36648202
Dragon Luck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PhrickerCoolibinТолько нужно решить, что делать со случаем, когда на максимальную дату есть несколько записей.
не суть важно. нужна именно дата последнего платежа. чтобы отследить активность.

не понимаю
если нужна только дата что бы отследить активность зачем тогда выбирать сумму можно же обойтись только group by
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Выборка значений по максимальной дате
    #38483027
bandyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
All, помогите мне плиз

ORACLE запрос:

select distinct
ENT.TITLE_SURNAME, ENT.NAME, ENT.OTCHESTVO, ENT.BIRTHDAY,
GUN.SERIES, GUN.NUMB, GUN.MAKE_YEAR,
CGUN.MODEL_TITLE, CGUN.CALIBR_CODE_1, CGUN.CALIBR_CODE_2, CGUN.CALIBR_CODE_3, CGUN.CALIBR_CODE_4,
CGUN.KINDGUN_CODE, CGUN.TYPE_GUN_CODE,
DOC.DOC_NAME||' '||DOC.DOC_SERIES||' '||DOC.DOC_NUMB||' от '||DOC.DOC_DATE as DOCS,
ENDS.END_DATE
from
ENT_PERSONS ENT,
DOC_RELATIONS SV,
GUN_GUNS GUN,
CODE_GUN CGUN,
DOC_DOCUMENTS_DOC_RELATIONS DRL,
DOC_DOCUMENTS DOC,
DOC_PERMISSIONS ENDS
where
ENT.TITLE_SURNAME='ФАМИЛИЯ' and ENT.NAME='ИМЯ' and ENT.OTCHESTVO='ОТЧЕСТВО' and ENT.BIRTHDAY='01.01.1985' and
ENT.ID=SV.EP_ID and SV.STATE=6 and SV.GUN_ID is not null and
SV.GUN_ID=GUN.ID and SV.ID=DRL.DRL_ID and DRL.DDC_ID=DOC.ID and ENDS.DDC_ID=DRL.DDC_ID and
CGUN.CODE=GUN.CODEGUN_CODE

1. Поле ENDS.END_DATE - Как вывести максимальную дату?
max(ENDS.END_DATE) over(partition by ENDS.END_DATE) - не помогает, выводит все даты
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #38483093
Фотография Ramin Hashimzade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bandyn
Код: plsql
1.
max(ENDS.END_DATE) over(partition by ENDS.END_DATE)



----
Ramin Hashimzade
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #38483096
Фотография Ramin Hashimzade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
черт тег не взял )))
Ramin Hashimzadebandyn
Код: plsql
1.
max(ENDS.END_DATE) over()



----
Ramin Hashimzade



----
Ramin Hashimzade
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #38483116
bandyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ramin Hashimzade,

так выводятся тоже кол-во записей, но дата становится у всех максимальная!
т.е. выводилась 2 записи с разными датами -> выводятся те же 2 записи но уже с одинак датами
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #38483122
Фотография Ramin Hashimzade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bandynRamin Hashimzade,

так выводятся тоже кол-во записей, но дата становится у всех максимальная!
т.е. выводилась 2 записи с разными датами -> выводятся те же 2 записи но уже с одинак датами
а ты что хочешь? Как задал вопрос так и получил ответ....
если не укстраивает и думать для тебя проблема , открой новый топик, приведи тестовые данные и покажи жел. резултат.

----
Ramin Hashimzade
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #38483134
Фотография Corner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bandynКак вывести максимальную дату?
вам ответили на этот вопрос

других условий вы не озвучивали. а теперь говорите
bandynтак выводятся тоже кол-во записей, но дата становится у всех максимальная!
сформулируйте конкретно свой вопрос. или сами додумайте куда групировку вставить.
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #38483136
bandyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ramin Hashimzade,

надо чтобы выводилась та запись, у которой дата максимальная
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #38483153
Фотография Ramin Hashimzade
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bandynRamin Hashimzade,

надо чтобы выводилась та запись, у которой дата максимальная
хорошо подкину нить...
1) order by mydate desc ) where rownum <= 1 (не всегда правильно)
2) dense_rank() over (mydate desc) r ) where r = 1
3) max(....) keep( dense_rank first mydate desc) group by ...


----
Ramin Hashimzade
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Выборка значений по максимальной дате
    #39310013
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подниму тему, отчет отягощен именно тем, что дата двоится вплоть до секунд.

То есть есть товар,цена, дата, есть еще в той же таблице некое поле L, строки отличаются только этим L

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT DP.ID,DP.NAME,T.PRICE,T.DATE
FROM
 DP JOIN T ON T.PRODUCT=DP.ID
  JOIN
   (SELECT PRODUCT,MAX(DATE) TD FROM T
   GROUP BY PRODUCT) DTM 
 ON T.PRODUCT=DTM.PRODUCT AND T.DATE=DTM.TD
ORDER by DP.NAME ASC



Я понимаю, что это ошибка оператора, что он в один документ впихнул строки по одному и тому же продукту с разной ценой и провел одной и той же датой. L получается идентификатор строки.
Как сюда впихнуть еще хотя бы максимум по L?

Смотрела как делает разработчик, он берет весь перечень продуктов и идет по списку для каждого товара делает
Код: sql
1.
2.
3.
SELECT PRICE
FROM
 (SELECT PRICE FROM T ORDER BY DATE DESC) T1 WHERE ROWNUM <= 1



То есть и пустые цены конечно тоже берет, но мне пустые не надо.
Вчера трассировала это у пользователя, 40 минут, трассировка 2 гигабайта заняла.
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #39310015
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон удалила лишнего

SELECT PRICE
FROM
(SELECT PRICE FROM T WHERE PRODUCT=:P ORDER BY DATE DESC) T1 WHERE ROWNUM <= 1
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #39310019
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nata44845,
добавте в сортировку поле L

ps
не совсем понял что Вам надо, покажите на примере

.....
stax
...
Рейтинг: 0 / 0
Выборка значений по максимальной дате
    #39310051
nata44845
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нижняя сортировка не интересна, выбирать все значения и по ним идти циклом, это утопия.

Надо такой же запрос как верхний, но с учетом, что внутри товара будет выбран максимум по DATE, а внутри даты будет максимум по L, то есть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT DP.ID,DP.NAME,T.PRICE,T.DATE
FROM
 DP JOIN T ON T.PRODUCT=DP.ID
  JOIN
   (SELECT PRODUCT,MAX(L) TL,MAX(DATE) TD FROM T
   GROUP BY PRODUCT) DTM 
 ON T.PRODUCT=DTM.PRODUCT AND T.DATE=DTM.TD AND T.L=DTM.TL
ORDER by DP.NAME ASC



это не правильно, потому что в данном случае L будет максимум по всему продукту, хотя там где максимальная дата теоретически и L тоже максимально, теоретически (но не забываем всякие ввели задним числом и т.д.)...

С другой стороны задумалась, это запрос для того чтобы показать цену покупателю на некоем ресурсе, если на ресурсе будет максимум цены, а покупатель придет в магазин и увидит цену меньше, то явно он не будет жаловаться.
Раз уж тут явный косяк оператора, может там где дата совпадает указать из двух цен большую, и не париться.
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 1 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выборка значений по максимальной дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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