mysql - 如何计算SQL中按对象分组内出现两个值的次数?
问题描述
我有两个表(用户和会话)。users 表包含用户(user1 和 user2 以及他们的 id)的组合。从会话表中,我想按 sessionID 分组,并计算用户表中的对出现在会话表中的对象分组中的次数。
例如,让我们取用户表中的第一对 (xxx, yyy)。现在,这对存在于 sessionID 1000 和 2000 中。因此,我希望该对的用户表中的 #sessions 具有 2 作为值。同样,对于所有对。
我有一个粗略的想法是对 sessionID 进行分组,看看用户表中的对是否存在于按对象分组的对象中,如果是,则将该组计为 1,并对包含该对的所有组求和。在这对发生的 2 次中,user1 点击了多少次 (user1clicks) 以及 user2 点击了多少次 (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 |
解决方案
(还)没有答案;太长的评论:
你需要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 |
推荐阅读
- python - webpack-bundle-tracker 没有创建 webpack-stats.json?
- r - 按值和一组多组列对R中的数据框进行排序
- google-apps-script - HtmlService.XFrameOptionsMode.ALLOWALL 不工作
- asp.net-core - NET Core - Ajax 帖子未绑定子模型
- docker - 如何提供对 gcloud gcr.io 中特定图像的访问权限?
- c++ - VS 在 Debug 文件夹中查找 Headerfile
- c# - 通用控制器的衍生物可以定义路由吗
- ruby-on-rails - 在 Rails 中,如何验证属于另一个模型的模型上的属性?
- java - 如何比较和分析两个 .dmp 文件?
- excel - 如果满足一个单元格中的条件,则删除整个 Excel 行?