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

Откуда:
Сообщений: 660
привет
таблица с 10 000 000 строк за день
можно ли выбрать из нее строки
первая строка минуты - то есть на выходе должно быть 1440 строк где каждая строка это первая запись этой минуты?
и можно ли получить не первую запись а максимальное значение некоторого столбца в эту минуту

сейчас делаю такую выборку программно но приходится тянуть все 10 лямов строк на клиента - вот подумал может сервер сделает быстрее?
30 мар 12, 15:51    [12341185]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
Alexander_fx,

можно,
SELECT TOP 1 WITH TIES


ORDER BY ROW_NUMBER() OVER ( PARTITION BY .... ORDER BY ) 
30 мар 12, 15:54    [12341219]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
а можно попросить пример
у меня все упирается что группировку приходиться делать по времени и выбрать получается только одно поле а надо выбрать все поля

тоесть есть таблица в ней поля
id
time
price

нужно выбрать все минутные минимумы и максимумы за сегодняшний день
тоесто чтобы было так

time min max
2012-01-01 00-01 ; 15 22
2012-01-01 00-02 ; 7 22
2012-01-01 00-03 ; 11 11
2012-01-01 00-04 ; null null
2012-01-01 00-05 ; 15 22
9 апр 12, 18:14    [12389636]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Alexander_fx, результат вы предоставили, а данные исходя из которых получается такой результат берутся с потолка? Окромя того, всеже неплохо было бы подготовить скрипты с тестовыми данными, ибо за вас это делать лень. Либо всеже поглядите в сторону поиска по этой теме - примеров более чем много.
9 апр 12, 18:42    [12389768]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
Alexander_fx,
ROW_NUMBER вам в помощь. Читайте бол.
9 апр 12, 19:17    [12389930]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
Ivan Durak,

читайте бол по сути иди ты нах
бол большой - время жизни маленькое

во как пример из мсдн может мне помочь?
а по ROW_NUMBER всего три примера и одно предложение описания.

USE AdventureWorks2012;
GO
SELECT FirstName, LastName, TerritoryName, ROUND(SalesYTD,2,1),
ROW_NUMBER() OVER(PARTITION BY TerritoryName ORDER BY SalesYTD DESC) AS 'Row'
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0
ORDER BY TerritoryName;
9 апр 12, 22:18    [12390564]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
qwerty112
Guest
1
Alexander_fx
можно ли выбрать из нее строки
первая строка минуты - то есть на выходе должно быть 1440 строк где каждая строка это первая запись этой минуты?

2
Alexander_fx
нужно выбрать все минутные минимумы и максимумы за сегодняшний день
тоесто чтобы было так

это , что , по-вашему - одно и тоже ?
а это всё одно и тоже задание ?
9 апр 12, 22:33    [12390597]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
qwerty112,

ну да - это одно и тоже задание

минутные максимумы минимумы за некоторый день - как вариант текущий день

то есть в базе 100 миллионов строк
нужно получить выборку в которой за некоторый период времени - например за вчера будет выдано 1440 строк - по коичеству минут( предположим что каждую минуты были данные) где будут в каждой строке - время - мин - макс
10 апр 12, 10:58    [12391892]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Alexander_fx, Рекомендации по оформлению сообщений в форуме
10 апр 12, 11:14    [12391999]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
qwerty112
Guest
Alexander_fx
qwerty112,

ну да - это одно и тоже задание

минутные максимумы минимумы за некоторый день - как вариант текущий день

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


select cast(convert(varchar(16), dt, 121)as datetime) , min(val), max(val)
from ..
group by cast(convert(varchar(16), dt, 121)as datetime)
10 апр 12, 12:05    [12392384]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить