2015-06-09 7 views
-2

Что происходит, когда каждое значение столбца в таблице делится на общее количество строк таблицы. Какая функция в основном выполняется сервером sql? Может ли кто-нибудь помочь?Значение столбца, деленное на количество строк в SQL Server

Подробнее: в чем разница между sum(column value)/row count и column value/ row count. например,

select cast(officetotal as float) /count(officeid) as value, 
sum(officetotal)/ count(officeid) as average from check1 
where officeid ='50009' group by officeid,officetotal 

Какова операция, выполняемая как для выбора?

+1

Какая функция? Хммм ... деление. –

+0

спасибо за ответ. но в чем разница между суммой (значением столбца)/числом строк и значением столбца/числом строк. , например, выберите литой (officetotal as float)/count (officeid) в качестве значения, суммы (officetotal)/count (officeid) в среднем из проверки1, где officeid = '50009' группой по служебным, служебным. какая операция выполняется на обоих? –

+0

В первом примере вы указываете сумму значений по количеству строк. Во-вторых, вы выделяете значение для подсчета строк. Почему это непонятно? –

ответ

0

В вашем примере оба значения будут всегда одинаковыми, потому что count(officeid) всегда равно 1, потому что officeid содержится в предложении WHERE, а officetotal также содержится в предложении GROUP BY. Таким образом, пример не будет работать, потому что никакая группировка не будет применяться.

При удалении officetotal с GROUP BY, вы получите следующее сообщение:

Колонка «officetotal» недопустим в списке выбора, потому что это не содержится ни в статистической функции или GROUP BY пункт.

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

Это просто невозможно записать это в SQL, используя GROUP BY. Если вы ищете что-то вроде первого или последнего значения из группы, вам придется использовать MIN(officetotal) или MAX(officetotal) или какой-либо другой подход.

+2

Он использовал _ officetotal/sum (officetotal) over() ' –

+0

Да, это, конечно, имеет смысл, хороший момент. –

+0

Спасибо за ваши ответы. Но мне все еще не ясно. делящее значение на количество строк. что он возвращает? . Какой сервер sql будет делать в этом случае? , (я знал, что сумма деления суммы на количество строк возвращает среднее значение этого конкретного значения.) –

Смежные вопросы