Как посчитать количество повторяющихся записей в базе данных? - PullRequest
2 голосов
/ 29 марта 2012

Рассмотрим следующую таблицу "твитов"

tweet_id  user_id  text
-----------------------------------------
1         1        look at my tweet
2         1        look at my tweet
3         1        a very different tweet
4         1        look at my tweet
5         1        look at my tweets
6         2        a cool tweet
7         2        this is my tweet
8         1        hello
9         1        hello

Для каждого пользователя я хочу посчитать количество дублированных твитов. В приведенном выше примере user_id 1 имеет в общей сложности 5 твитов, из которых 2 уникальны (tweet_id 3 и 5), а 3 дубликаты (1, 2 и 4). Таким образом, результат запроса для пользователя 1 должен быть «3».

[EDIT] Посмотрите на user_id 1. Твит "посмотри на мой твит" появляется 3 раза, твит "привет" 2 раза. Общее количество дублированных твитов составляет 3 + 2 = 5.

Ответы [ 3 ]

3 голосов
/ 29 марта 2012

Для первой части вы можете использовать следующий запрос

select user_id, sum(count)
from
(
select user_id, text, count(tweet_id) count
from tweets 
group by 
user_id, text
having count(tweet_id) > 1
) t
group by user_id

Внутренний запрос находит всех пользователей и твиты, которые встречались более одного раза.Внешний запрос суммирует повторяющиеся значения для каждого пользователя

1 голос
/ 29 марта 2012

Попробуйте это:

Select count(text)-count(distinct text) from tweets where user_id=1
0 голосов
/ 29 марта 2012
select count(*) as count, text from table group by text order by user_id desc;

Затем вам понадобится функция на стороне сервера для группировки по user_id

...