首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL数据汇总/计数表

MySQL数据汇总/计数表
EN

Stack Overflow用户
提问于 2016-08-26 13:05:34
回答 2查看 97关注 0票数 0

我正在尝试整理一个汇总表,其中包含按组发送的邮件类型的计数。

希望下面的内容足以解释我的意思。

表1(发件人)

代码语言:javascript
复制
| id | name | group_id |
+----+------+----------+
| 1  | mike | 1        |
| 2  | john | 1        |
| 3  | lucy | 2        |
| 4  | lobo | 3        |

表2(邮件)

代码语言:javascript
复制
| id | type     | sender_id |
+----+----------+-----------+
| 1  | letter   | 1         |
| 2  | postcard | 2         |
| 3  | postcard | 1         |
| 4  | letter   | 2         |
| 5  | postcard | 2         |
| 6  | postcard | 4         |

表3(组)

代码语言:javascript
复制
| id | name  | active |
+----+-------+--------+
| 1  | alpha | 1      |
| 2  | black | 1      |
| 3  | cero  | 0      |

理想结果

代码语言:javascript
复制
| group | letter | postcard | parcel |
+-------+--------+----------+--------+
| alpha | 2      | 3        | 0      |
| black | 0      | 0        | 0      |

因此,我需要获取活动组的每种邮件类型的计数。

我一直在学习示例(只学习MySQL),但当我想到这种情况时,我完全是一片空白。

我看过Joining three tables to get summary data in MySQL的答案,但我不太明白如何翻译我的问题的答案。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2016-08-26 13:30:30

你把这个查询

代码语言:javascript
复制
Select count(*) from senders s inner join mail m on s.id = s.sender_id inner join
groups g on s.groups_id = g.id group by m.type 
票数 0
EN

Stack Overflow用户

发布于 2016-08-26 14:11:26

代码语言:javascript
复制
SELECT t.name,
 MAX(CASE t.TYPE WHEN 'letter' THEN @CS:=@CS+1 ELSE 0 END ) letter,
 MAX(CASE t.TYPE WHEN 'postcard' THEN @CS1:=@CS1+1 ELSE 0 END ) postcard ,
 MAX(CASE t.TYPE WHEN 'parcel ' THEN @CS2:=@CS2+1 ELSE 0 END ) parcel  
FROM 
(SELECT
    groups. name,
    mail.type
FROM
    groups
LEFT JOIN senders ON groups.id = senders.id
LEFT JOIN mail ON senders.id = mail.sender_id ) AS t
,(SELECT @CS:=0) CS ,(SELECT @CS1:=0) CS1 ,(SELECT @CS2:=0) CS2 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39158622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档