Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

Хитрый SELECT   Найти похожие ветки 

 
Delphile   (2007-06-13 18:01) [0]

Вроде простая задача, а что-то не получается((
Есть таблица со значениями счетчиков. Поля:

ID, CounterID, ValueDate, Value

Нужно запросом выбрать последние значения для каждого счетчика(т.е. с максимальной датой снятия показаний)  и получить что-то вроде

CounterID, LastValue


 
b z   (2007-06-13 18:14) [1]


> Delphile   (13.06.07 18:01)

а что конкретно не получается? покажите ваши пробы


 
Плохиш ©   (2007-06-13 18:16) [2]

select counterid, max(value) as lastvalue from ... group by counterid

это надо что ли? И в чём здесь хитрость?


 
Johnmen ©   (2007-06-13 21:10) [3]


> Плохиш ©   (13.06.07 18:16) [2]

Я думаю, что последние показания это те Value, у которых макс. ValueDate для соотв-их CounterID.

И здесь ничего хитрого. Такой вопрос здесь появляется каждую неделю. Зачетную или экзаменационную...:)


 
Delphile   (2007-06-13 22:51) [4]


> b z   (13.06.07 18:14) [1]
>
> > Delphile   (13.06.07 18:01)
>
> а что конкретно не получается? покажите ваши пробы
> <Цитата>
>
>
> Плохиш ©   (13.06.07 18:16) [2]
> select counterid, max(value) as lastvalue from ... group
> by counterid
>
> это надо что ли? И в чём здесь хитрость?


Вот вобщем-то все к чему я пришел, но это ведь не то что задано. Значение счетчика может в общем случае уменьшаться. Интересует как правильно решать такие задачи средствами SQL. Таблицы очень большие и это не зачет и не экзамен кстати.


 
Johnmen ©   (2007-06-13 23:11) [5]

SELECT * FROM Table T1
WHERE T1.ValueDate=
 (SELECT MAX(T2.ValueDate) FROM Table T2
  WHERE T2.CounterID=T1.CounterID)


 
Delphile   (2007-06-13 23:42) [6]

Очень изящно.  И план в одну линию. Я нагородил поболее. хотя планы одинаковые. Спасибо всем

select cv.CounterID, cv.Value LastValue
from CounterValue cv
join (select CounterID, max(ValueDate) LastDate
 from CounterValue  
 group by CounterID) cvd on cv.CounterID = cvd.CounterID
where cvd.LastDate = cv.ValueDate


 
Delphile   (2007-06-13 23:44) [7]

это было на


> Johnmen ©   (13.06.07 23:11) [5]



Страницы: 1 вся ветка

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-1180958282
ambhtr
2007-06-04 15:58
2007.10.21
Как определить, существует ли у DBF таблицы индекс или нет?


3-1182110534
mysql
2007-06-18 00:02
2007.10.21
regexp и кириллица в mysql


11-1160470373
Grademax
2006-10-10 12:52
2007.10.21
Как в KOL (без MCK) создать глобальную горячую клавишу


1-1186384261
ancot
2007-08-06 11:11
2007.10.21
Быстрый импорт из Excel


2-1191234035
F@T@L_Err0r
2007-10-01 14:20
2007.10.21
TServerSoker и TClientSoker