2016-01-19 2 views

ответ

4

Среднее значение price_from и price_to в каждой строке:

SELECT (price_from + price_to)/2 AS row_avg FROM tablename; 

Среднее значение каждого из указанных выше строк в среднем:

SELECT AVG((price_from + price_to)/2) AS avg_of_avgs FROM tablename; 

среднее значение каждого столбца:

SELECT AVG(price_from) AS price_from_avg, AVG(price_to) AS price_to_avg FROM tablename; 

среднее значение все данные (как price_from, так и price_to):

SELECT AVG(p) as total_avg FROM 
(SELECT price_from AS p FROM tablename UNION ALL SELECT price_to FROM tablename) dummyname; 

Приведенные выше запросы будут возвращать целое число средние, если price_from и price_to являются целыми числами. Если вы хотите, чтобы в этой ситуации были использованы десятичные средние значения, вам нужно использовать cast для преобразования по меньшей мере одного числа в каждом вычислении столбцов в float. Запросы стали бы тогда:

Среднее значение price_from и price_to в каждой строке (с броском):

SELECT (CAST(price_from AS FLOAT) + price_to)/2 AS row_avg FROM tablename; 

среднее значение каждого запроса составляет в среднем выше строк (с броском):

SELECT AVG((CAST(price_from AS FLOAT) + price_to)/2) AS avg_of_avgs FROM tablename; 

Среднее значение каждого столбца (с литой):

SELECT AVG(CAST(price_from AS FLOAT)) AS price_from_avg, 
AVG(CAST(price_to AS FLOAT)) AS price_to_avg FROM tablename; 

Среднее значение всех данных (как price_from и price_t о с литым):

SELECT AVG(p) as total_avg FROM 
(SELECT CAST(price_from AS FLOAT) AS p FROM tablename UNION ALL 
SELECT CAST(price_to AS FLOAT) FROM tablename) dummyname; 
+0

@ user889349 пожалуйста, рассмотреть вопрос о принятии моего ответа, если он ответил на ваш вопрос! :) – VKK

1

Попробуйте этот запрос

SELECT AVG(avgprice) as avgprice from 
(SELECT (price_from + price_to)/2 AS avgprice FROM [Table Name]) as temp; 
Смежные вопросы