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

Откуда:
Сообщений: 7
Добрый день. задача стоит в подсчете среднего значения последних 13 записей в таблице dbo.server. Помогите разобраться, не работает:
Select avg(data) as 'avgdata'
from
(select top 13 absolute_number, date
from dbo.server
where absolute_number='11')

отдельно работает:
select top 13 absolute_number, date
from dbo.server
where absolute_number='11')
2 апр 15, 16:25    [17465311]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20603
SELECT TOP 13 без ORDER BY даст тебе не 13 последних, а 13 случайных записей.
2 апр 15, 16:28    [17465332]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
yoltish
Member

Откуда:
Сообщений: 7
order by есть в конце скрипта, забыл написать. Последние 13 возвращаются, проблема в подсчете суммы 13 значений
2 апр 15, 16:31    [17465364]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
yoltish,

Во-первых, в каком конце скрипта, если ORDER BY должен быть внутри скобок?
Во-вторых, Вы нее видите разницы между "data" и "date"?
2 апр 15, 16:34    [17465393]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
msLex
Member

Откуда:
Сообщений: 8203
yoltish
Select avg(data) as 'avgdata'
from
(select top 13 absolute_number, date
from dbo.server
where absolute_number='11') as a
2 апр 15, 16:36    [17465415]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1454
yoltish,

SELECT
      AVG(X.DATA) AS [AVGDATA]
FROM (
      SELECT TOP 13
            absolute_number AS DATA,
            [date]
      FROM dbo.[server]
      WHERE absolute_number = '11'
      ORDER by [date]
     ) AS X
2 апр 15, 16:37    [17465427]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
msLex
yoltish
Select avg(data) as 'avgdata'
from
(select top 13 absolute_number, date
from dbo.server
where absolute_number='11') as a
И что? У а будет всё равно поле date,
а снаружи нужно avg(data)
2 апр 15, 16:38    [17465432]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
yoltish
Member

Откуда:
Сообщений: 7
Извините, быстро печатал. Вот скрипт. Но не работает именно Select avg(data) as 'avgdata' from...
select top 13 absolute_number, data
from dbo.server
where absolute_number='11'
order by data desk-возвращает последние 13 строк

Select avg(data) as 'avgdata'
from
(select top 13 absolute_number, data
from dbo.server
where absolute_number='11'
order by data desk)
2 апр 15, 16:42    [17465472]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1454
iap
yoltish,

Во-первых, в каком конце скрипта, если ORDER BY должен быть внутри скобок?
Во-вторых, Вы нее видите разницы между "data" и "date"?


и в третьих хер пойми что хочет в итоге получить ТС, ибо агрегат AVG к типу date неприменим
2 апр 15, 16:44    [17465485]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
msLex
Member

Откуда:
Сообщений: 8203
iap
И что? У а будет всё равно поле date,
а снаружи нужно avg(data)

Я почему-то уверен, что проблема у автора именно в отсутствии алиаса у подзапроса, а не в неправильном написании имени поля.
2 апр 15, 16:44    [17465493]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
yoltish
Извините, быстро печатал. Вот скрипт. Но не работает именно Select avg(data) as 'avgdata' from...
select top 13 absolute_number, data
from dbo.server
where absolute_number='11'
order by data desk-возвращает последние 13 строк

Select avg(data) as 'avgdata'
from
(select top 13 absolute_number, data
from dbo.server
where absolute_number='11'
order by data desk)
А как Вы себе представляете среднюю дату?
Объясните нам подробно, пожалуйста.
2 апр 15, 16:46    [17465501]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
yoltish
Member

Откуда:
Сообщений: 7
data- это данные
2 апр 15, 16:47    [17465513]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1454
yoltish
Извините, быстро печатал. Вот скрипт. Но не работает именно Select avg(data) as 'avgdata' from...
select top 13 absolute_number, data
from dbo.server
where absolute_number='11'
order by data desk-возвращает последние 13 строк

Select avg(data) as 'avgdata'
from
(select top 13 absolute_number, data
from dbo.server
where absolute_number='11'
order by data desk)


desk это вам в производство мебели надо

а в предложении ORDER BY могут использоваться ASC или DESC
2 апр 15, 16:47    [17465520]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
yoltish
Member

Откуда:
Сообщений: 7
Спасибо за комменнтарии, у меня в запросе именно desc.
2 апр 15, 16:49    [17465529]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1454
ну итоговый вариант у вас будет выглядеть тогда так

повнимательней писать надо, ибо сначала поле было date (к чему логически можно заключить что требовалась какое то значение даты) а потом еще и синтаксис мебельной фабрики добавился

Select avg(x.data) as 'avgdata'
from
(select top 13 absolute_number, data
from dbo.server
where absolute_number='11'
order by data DESC) as x
2 апр 15, 16:51    [17465541]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
yoltish
Member

Откуда:
Сообщений: 7
MsLex спасибо за помощь! Ваше утверждение абсолютно верно! проблема именно в отсутствии алиаса у подзапроса, а не в неправильном написании имени поля.
2 апр 15, 16:52    [17465547]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
yoltish
Member

Откуда:
Сообщений: 7
Спасибо всем за помощь!
2 апр 15, 16:54    [17465554]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
yoltish
проблема именно в отсутствии алиаса у подзапроса
Проблема в том, что надо писать не "ниработает!!!", а копировать сюда из результата текст ошибки, да и по возможности текст запроса тоже.
2 апр 15, 20:03    [17466493]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
msLex
Member

Откуда:
Сообщений: 8203
alexeyvg
yoltish
проблема именно в отсутствии алиаса у подзапроса
Проблема в том, что надо писать не "ниработает!!!", а копировать сюда из результата текст ошибки, да и по возможности текст запроса тоже.

к сожалению, в случае ошибки, которую допустил автор, сообщение сервера не очень информативно, что-то типа "incorrect syntax near )".
2 апр 15, 20:09    [17466515]     Ответить | Цитировать Сообщить модератору
 Re: select from select  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
msLex
alexeyvg
пропущено...
Проблема в том, что надо писать не "ниработает!!!", а копировать сюда из результата текст ошибки, да и по возможности текст запроса тоже.

к сожалению, в случае ошибки, которую допустил автор, сообщение сервера не очень информативно, что-то типа "incorrect syntax near )".
Думаю, в сочетании с текстом запроса этого было бы достаточно, что бы в первом ответе дать правильный совет :-)
Я, по крайней мере, при таком тексте сразу посмотрел бы на наличие алиаса.

Я вообще сразу про алиас подумал, просто посты ТС настолько невнятные, с такими кривыми и синтаксически неправильными конструкциями, что непонятно, в чём дело, и действительно ли текст ошибочного запроса такой, какой выложен здесь.

В общем, общее правило - не нужно пересказывать запросы и ошибки - нужно их просто копировать, в крайнем случае заменяя реальные имена (серверов таблиц etc) на вымышленные, если это нужно. А своими словами нужно описывать бизнес-задачу.
2 апр 15, 21:34    [17466789]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить