【发布时间】:2016-06-13 22:04:12
【问题描述】:
我使用 sql server 并且我有表格:
tbl_Message:
id, user_id, group_id
这是一个包含所有消息的表,其中包含谁编写消息 (user_id) 以及它被发送到哪个组 (group_id) 的详细信息
tbl_GroupUser:
user_id, group_id
这是一个包含用户及其所在组的表(每个组有多个 user_id,每个用户有多个组)。
我创建了一个查询,它返回用户发送的消息与他收到的消息之间的比率。我做了一个适用于特定用户的查询,我想要一个显示所有用户结果的查询。这是我提出的查询:
SELECT CAST((SELECT COUNT(*) FROM tbl_Message WHERE user_id = ‘user’)
as decimal) /
(SELECT COUNT(*) FROM tbl_Message WHERE group_id in
(SELECT group_id FROM tbl_GroupUser WHERE user_id = ‘user’) and user_id != ‘user’)
例子:
tbl_GroupUser
user_id | group_id
-------------------
1 | 1
2 | 1
tbl_Message
id | user_id | group_id
-----------------------
1 | 1 | 1
2 | 2 | 1
3 | 2 | 1
将返回:
user_id | ratio
---------------
1 | 1/2
2 | 2/1
【问题讨论】:
-
你能展示一些样本数据吗?请问结果是什么?
-
我现在添加了一个例子。
-
结果不会是 1/3 和 2/3 吗?还是您只是在寻找计数与不是该用户的所有计数?
-
不,计算用户发送的消息与用户接收的消息。
标签: sql sql-server