我很难计算与id相关的行数。查询返回正确的数据。
SELECT T.`payment`, T.`time_left`, T.`time_arrived`, T.`group_separator`, MD.`group_name`
FROM Transaction T
LEFT JOIN Group G
ON T.`group_id` = G.`group_id`
LEFT JOIN division DI
ON G.`associated_group_id` = DI.`group_id`
LEFT JOIN meeting_data MD
ON G.`group_name` = MD.`group_name`
GROUP BY T.`time_left`;
数据集示例;
**payment**
paid
paid
not_paid
paid
**time_left**
2014-09-09 12:23:42
2014-09-09 12:24:14
2014-09-09 12:24:49
2014-09-10 19:04:12
**time_arrived**
2014-09-09 10:20:21
2014-09-09 10:21:16
2014-09-09 10:21:45
2014-09-09 15:35:06
**group_separator**
25
25
25
26
**group_name**
Team Grey
Team Grey
Team Grey
Summer Blues
我现在正在尝试计算每个group_separator
的一部分行数。
因此25将返回计数3. 26将返回1的计数。
我做一个count(*)或count(distinct(group_separator))并获得一个奇怪的行数(我说的数百个)。表格中有大约77000行。
答案 0 :(得分:0)
您按T。time_left
进行分组,因此计数会为您计算每个T中的行数。time_left
。如果您想通过group_separator进行计数,则需要将其分组。
或者我误解了你的问题?
答案 1 :(得分:0)
首先,你真的需要left outer join
吗?您正在加入应具有外键关系的字段,而left outer join
只是说“我的数据不适合我的数据模型”。
其次,您将在行中返回许多其他信息,这些信息在组分隔符级别会更详细。
也许这个问题是你真正想要的:
SELECT T.`group_separator`, count(*) as NumGroups
FROM Transaction T JOIN
Group G
ON T.`group_id` = G.`group_id` JOIN
division DI
ON G.`associated_group_id` = DI.`group_id` JOIN
meeting_data MD
ON G.`group_name` = MD.`group_name`
GROUP BY T.`group_separator`;
实际上,我看这个,如果其他join
实际上改变了结果,我会感到惊讶。你可能只想:
SELECT T.`group_separator`, count(*) as NumGroups
FROM Transaction T
GROUP BY T.`group_separator`;