2015-10-12 5 views
-2

Я хотел бы знать, как получить отчетливую сумму произведенийКак получить сумму столбца на основе отчетливого ключа (другой столбец)

В таблице у меня есть

Name Rating 
A  3 
A  3 
B  4 
C  3 
C  3 

Конечный результат Я хочу SUM(case when distinct table1.name then rating)/Count(case when distinct table1.name then rating) окончательный ответ = (3 + 4 + 3)/3 = 10/3 = 3,33

заранее спасибо

+0

Почему ваш вопрос помечено Vertica & MySQL? – Kermit

ответ

0

Просто другая перспектива.

Найти средний рейтинг для каждого имени, а затем среднего по сгруппированному.

Запрос

select avg(t.`avg`) as `avg` from 
(
    select Name, 
    avg(rating) as `avg` 
    from your_table_name 
    group by Name 
)t; 

SQL Fiddle

+0

Эта другая перспектива полностью сломана. Пример ** [Демонстрация] (https://data.stackexchange.com/stackoverflow/query/374729) **. Среднее значение для средних значений не совпадает с средним значением набора данных. В вашем конкретном примере, где все данные внутри группы одинаковы, он работает, но когда у вас разные значения, это может быть неудачно, например (A, 3), (A, 1). – lad2025

+0

@ lad2025: Это должно быть 3.1111 прямо в созданном образце. – Wanderer

+0

Рассчитаем (3 + 4 + 3 + 1)/4 = 2,75 – lad2025

0

SUM/COUNT < =>AVG так

SqlFiddleDemo

SELECT (SUM(Rating) * 1.0)/COUNT(*) AS result 
FROM (
    SELECT DISTINCT * 
    FROM tab 
) AS sub; 

может быть:

SqlFiddleDemo2

SELECT AVG(Rating) AS result 
FROM (
    SELECT DISTINCT * 
    FROM tab 
) AS sub; 
Смежные вопросы