2014-08-27 2 views
0

В основном, как говорится в этом вопросе, я ищу самый простой и самый прямой способ получения счетов на основе уникальных значений.MYSQL Игнорировать значения повторения и получить уникальный счет

Вот мой набор данных:

id | item_id | user_id 
1 | 10  | 123 
2 | 10  | 123 
3 | 10  | 123 
4 | 11  | 123 
5 | 12  | 123 
6 | 10  | 456 
7 | 10  | 789 
8 | 12  | 456 

В идеале, когда я запускаю запрос я должен получить следующее:

count | user_id 
3  | 123 
2  | 456 
1  | 789 

Где даже если пользователь 123 имеет 5 пунктов к их имени, действительно только купил 3 уникальных предмета. Это действительно прямо, и я просто пропустил его полностью? Вот то, что я в настоящее время:

SELECT count(user_id) AS count, item_id, user_id 
FROM table 
GROUP BY item_id, user_id 
HAVING count > 1 
ORDER BY count DESC 

Это производит противоположное тому, что я хочу:

count | user_id 
5  | 123 
2  | 456 
1  | 789 

Спасибо заранее! И если это уже ответили, пожалуйста, укажите мне в этом направлении.

ответ

1

Вы можете рассчитывать различные идентификаторы элементов и затем группу от пользователя ID:

SELECT 
    COUNT(DISTINCT item_id) AS count, 
    user_id 
FROM 
    event_assigned 
GROUP BY 
    user_id 
ORDER BY 
    count DESC 
Смежные вопросы