Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как найти последнюю запись  [new]
AlexeyGor
Member

Откуда:
Сообщений: 35
Здравствуйте. Подскажите какой функцией воспользоваться чтобы найти последнее значение столбца PRICE за промежуток времени.

У меня в таблице идет поток сделок, каждую секунду совершается сделка. Я группирую эти сделки за промежуток 5 минут, нахожу минимальную и максимальную цену за этот промежуток времени.
А как узнать цену последней сделки, которая прошла за этот промежуток?

Спасибо =)


select (cast(left(MOMENT, 12) as bigint)/5*5)dtime, max(PRICE_DEAL), min(PRICE_DEAL)
from [FullOrderLog].[dbo].[сделки] where action = 2
group by (cast(left(MOMENT, 12) as bigint)/5*5)
order by dtime

К сообщению приложен файл. Размер - 7Kb
22 дек 11, 21:47    [11811923]     Ответить | Цитировать Сообщить модератору
 Re: как найти последнюю запись  [new]
AlexeyGor
Member

Откуда:
Сообщений: 35
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=737073

читаю это..вроде похоже
22 дек 11, 22:16    [11811992]     Ответить | Цитировать Сообщить модератору
 Re: как найти последнюю запись  [new]
AlexeyGor
Member

Откуда:
Сообщений: 35
До конца не разобрался =) Пришел вот к такому....
Но в sql server не работает функция last_value, а мне она нужна на месте sum. Как быть?



select distinct cast(left(MOMENT, 12) as bigint)/5*5,
sum(VOLUME) OVER(PARTITION BY (cast(left(MOMENT, 12) as bigint)/5*5)) AS 'Total'


from [FullOrderLog].[dbo].[ордер лог одного дня 0610 упорядочен по моменту]
where action = 2
order by cast(left(MOMENT, 12) as bigint)/5*5
23 дек 11, 01:32    [11812383]     Ответить | Цитировать Сообщить модератору
 Re: как найти последнюю запись  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
AlexeyGor,

WITH cte AS (
SELECT 'b' f UNION ALL SELECT 'd' UNION ALL SELECT 'a' UNION ALL SELECT 'c' UNION ALL SELECT 'b' UNION ALL SELECT 'b'
)
-- Вообще-то в MSSQL для кучи, если нет первичного ключа, либо таймштампа - невозможно установить порядок записей
-- Но есть недокументированая (и ненадежная) возможность:
SELECT f
,ROW_NUMBER() OVER (ORDER BY (SELECT 1)) rnBad -- работает, но это кагбы не совсем правильно
,ROW_NUMBER() OVER (ORDER BY f) rnGood
FROM cte
ORDER BY ROW_NUMBER() OVER (ORDER BY (SELECT 1)) -- дает неожиданное поведение
23 дек 11, 01:50    [11812405]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить