Как посчитать, сколько раз два значения встречались внутри группы по объектам в SQL? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть две таблицы (пользователи и сеанс).Таблица users содержит комбинацию пользователей (user1 и user2 вместе с их идентификаторами).Из таблицы сеансов я хочу сгруппировать по идентификатору сессии и посчитать, сколько раз пары в таблице пользователей встречаются в группе, сгруппированной по объектам из таблицы сеанса.

Например, давайте возьмем первую пару в таблице пользователей (ххх, ггг).Теперь эта пара существует в sessionID 1000, а также в 2000 году. Итак, я хочу, чтобы #sessions в таблице пользователей для этой пары имели значение 2 в качестве значения.Аналогично для всех пар.

Грубая идея, которую я имею, состоит в том, чтобы сгруппировать sessionID и посмотреть, существует ли пара из таблицы пользователей в этой группе, сгруппированной по объекту, если да, считать эту группу как 1 и суммировать по всем группам, которые содержат эту пару.И из 2 раз, когда произошла пара, сколько раз пользователь1 щелкнул (user1clicks) и сколько раз пользователь2 нажал (user2clicks).

Я не могу перевести это в запрос.Действительно изо всех сил, чтобы решить эту проблему ... Любая помощь высоко ценится!

Таблица пользователей:

| user1 | id1 | user2 | id2 | 
-----------------------------
| xxx   | 1   | yyy   | 2   |
| xxx   | 1   | zzz   | 3   |
| yyy   | 2   | zzz   | 3   |

Таблица сеансов:

| user |  id   | sessionID | clicked |
--------------------------------------
| xxx  |  1    |  1000     |  yes    |
| yyy  |  2    |  1000     |   no    |
| xxx  |  1    |  2000     |   no    |
| yyy  |  2    |  2000     |   no    |
| xxx  |  1    |  3000     |   no    |
| zzz  |  1    |  3000     |  yes    |

Вывод:

| user1 | id1 | user2 | id2 | #sessions | user1clicks | user2clicks|
--------------------------------------------------------------------
| xxx   | 1   | yyy   | 2   |     2     |  1          |   0        |
| xxx   | 1   | zzz   | 3   |     1     |  1          |   0        |
| yyy   | 2   | zzz   | 3   |     0     |  0          |   0        |

1 Ответ

1 голос
/ 27 июня 2019

Нет (пока) ответа; слишком долго для комментария:

Вам нужно 3 таблицы;

users
user_id | user
-----------------------------
       1 | xxx  
       2 | yyy   
       3 | zzz   

combinations 
user_id1 | user_id2 
-----------------------------
       1   | 2   
       1   | 3   
       2   | 3   

sessions 
session_id    | user_id   | sessionID | clicked |
--------------------------------------
101    |  1    |  1000     |  yes    |
102    |  2    |  1000     |   no    |
103    |  1    |  2000     |   no    |
104    |  2    |  2000     |   no    |
105    |  1    |  3000     |   no    |
105    |  1    |  3000     |  yes    |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...