2015-02-28 2 views
0

У меня есть следующая таблица ниже, и я пытаюсь найти каждый IID, у которого есть как минимум 2 или более одинаковых IID, и найти среднее значение статистики. Оператор MySQL выглядит следующим образом: выберите счет (отдельный IID), как рассчитывается по курсу;, но я получаю одно поле, и он содержит число 15, таблица очень маленькая и имеет только 20 кортежей. Я застрял и не могу пойти дальше этого.MySQL Count (Distinct) возвращает одно значение

UID| IID | stats 
----------------- 
1 | 1  | 3 
1 | 1  | 4 
1 | 3  | 1 
2 | 3  | 1 
2 | 3  | 1 
2 | 1  | 3 
2 | 2  | 4 

В результате я хотел бы видеть это сгруппированы по IID выполняется, если есть два или более и в среднем статистике. У меня такое чувство, что мне приходится группироваться по IID и суммировать статистику и делиться на количество отсчетов.

IID | stats 
----------------- 
1  | 3.5 
3  | 1.5 
+0

Пожалуйста, отредактируйте ваш вопрос с результатами, которые вы ищете. Например, как может «IID» иметь как минимум 2 или более одинаковых 'IID'? –

+0

Я обновил, чтобы включить то, что я хотел бы видеть в результате. – Dino

ответ

1

Если вы действительно хотите получить среднее значение, просто используйте avg(stats). Я не мог понять, как заставить числа соответствовать вашему результату, поэтому я подумал, что вам нужен другой делитель.

select sum(stats)/(count(distinct UID) * 1e) /* cast to float */ 
from rate 
group by IID 
having count(*) > 1 
0

Это, скорее всего, правильный. Ваше утверждение подсчитывает количество различных значений в этом столбце. Для вашего случая, вы должны использовать group by и having.

0

Почему вы не используете group_by (IID), который будет группировать ваши данные в соответствии с IID, а затем использовать в нем предложение where.

0

Следующий запрос возвращает среднее значение stats для каждого iid, который имеет более чем одну строку:

select iid, avg(stats) 
from table t 
group by iid 
having count(*) > 1; 

Это кажется разумным результатом, но значения будут:

1 3.33 
3 1 

Я не уверен, какой расчет вы имеете в виду для результатов в своем вопросе.

+0

Как получилось среднее значение 3,33 и 1? – Dino

+1

Там три строки в образце данных с «IID» = 1. Их статистика равна 3, 3 и 4. Среднее значение равно 3.33. Три строки с «IID» = 3, их статистика равномерно 1. Среднее значение равно 1. , –

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