Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Последняя запись, Последняя запись 
V
    Опции темы
KAV2008
Дата 5.4.2011, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 26.6.2008

Репутация: нет
Всего: нет



Есть таблица Table с полями Id (участок) и ves (вес) и revision (дата)
id     ves          revision
-------------------------------
1        10       01.01.2011
1        15       15.01.2011
2        17       22.01.2011
2        33       23.01.2011
3        48       01.01.2011
3        11       17.01.2011
3        47       05.02.2011
*****
12       15       01.01.2011


Необходимо выбрать по каждому участку (ID) последнюю по времени запись
Результат;
id     ves          revision
-------------------------------
1        15       15.01.2011
2        33       23.01.2011
3        47       05.02.2011
12       15       01.01.2011

БД oracle (не используя limit и top)

Подскажите пожалуйста как справиться с этим запросом
PM MAIL   Вверх
Zloxa
Дата 5.4.2011, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(KAV2008 @  5.4.2011,  13:47 Найти цитируемый пост)
Необходимо выбрать по каждому участку (ID) последнюю по времени запись

Код

select id
  , max(ves) keep (dense_rank last order by revision) ves
  , max(revision) revision
from table
group by id

Код

select id,ves,revision
from (
  select t.*
    , row_number() /*dense_rank()*/ over (partition by id order by revision desc ) rn
  from table t
)
where rn =1;



Это сообщение отредактировал(а) Zloxa - 5.4.2011, 13:53


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
KAV2008
Дата 6.4.2011, 05:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 26.6.2008

Репутация: нет
Всего: нет



Спасибо Все получилось!
PM MAIL   Вверх
KAV2008
Дата 6.4.2011, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 26.6.2008

Репутация: нет
Всего: нет



Подскажите пожалуйста  с запросом 
Задач та же + по каждому участку id есть подучастки  со своим весом на определенную дату
Вес по каждому подучастку будет введен на определенной число
 как выбрать последнюю запись для каждой группы подучасков каждого участка
id     id_y     ves          revision
-------------------------------
1      1            10       11.01.2011
1      2            15       11.01.2011
1      1           17        15.02.2011
1      2           22        15.02.2011
2      4           13        15.01.2011
2      3           46        15.01.2011
2      4           13        27.03.2011
2      3           46        27.03.2011
***

Результат;
id     id_y     ves          revision
-------------------------------
1      1           17        15.02.2011
1      2           22        15.02.2011
2      4           13        27.03.2011
2      3           46        27.03.2011
Спасибо 
PM MAIL   Вверх
Zloxa
Дата 6.4.2011, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(KAV2008 @  6.4.2011,  09:27 Найти цитируемый пост)
Задач та же + по каждому участку id есть подучастки  со своим весом на определенную дату

Добавить id участка в группировку или же в критериий секционирования аналитической функции. 



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
KAV2008
Дата 6.4.2011, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 26.6.2008

Репутация: нет
Всего: нет




Код

select id,ves,revision, id_y
from (
  select t.*
    , row_number() /*dense_rank()*/ over (partition by id, id_y order by revision desc ) rn
  from table t
)
where rn =1;


PM MAIL   Вверх
KAV2008
Дата 6.4.2011, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 26.6.2008

Репутация: нет
Всего: нет



Спасибо за помощь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.