Mysql 每个组件中有多少个组成了总计数

Mysql 每个组件中有多少个组成了总计数,mysql,sql,Mysql,Sql,我需要找出每个组件中有多少组成了总计数。这将用于制作堆叠条形图 数据如下所示 +----+---------+-------+---------+ | ID | SOURCE | MCODE | RELATED | +----+---------+-------+---------+ | 1 | EMAIL | A | 40 | +----+---------+-------+---------+ | 2 | EMAIL | A | 43 | +

我需要找出每个组件中有多少组成了总计数。这将用于制作堆叠条形图

数据如下所示

+----+---------+-------+---------+
| ID | SOURCE  | MCODE | RELATED |
+----+---------+-------+---------+
| 1  | EMAIL   | A     | 40      |
+----+---------+-------+---------+
| 2  | EMAIL   | A     | 43      |
+----+---------+-------+---------+
| 3  | WEBFORM | C     | 40      |
+----+---------+-------+---------+
| 4  |         | A     | 40      |
+----+---------+-------+---------+
| 5  | WEBFORM | B     | 43      |
+----+---------+-------+---------+
| 6  |         | C     | 43      |
+----+---------+-------+---------+
| 7  |         | A     | 43      |
+----+---------+-------+---------+
| 8  | WEBFORM | D     | 43      |
+----+---------+-------+---------+
| 9  | EMAIL   | B     | 43      |
+----+---------+-------+---------+
| 10 |         | D     | 42      |
+----+---------+-------+---------+
我想知道的是,对于给定的
相关
,每个
中有多少构成了
MCODE
的计数

例如,related=43的结果应为

+-------+---------+-------+
| MCODE | SOURCE  | COUNT |
+-------+---------+-------+
| A     | EMAIL   | 1     |
+-------+---------+-------+
| A     | UNKNOWN | 1     |
+-------+---------+-------+
| B     | EMAIL   | 1     |
+-------+---------+-------+
| B     | WEBFORM | 1     |
+-------+---------+-------+
| C     | UNKNOWN | 1     |
+-------+---------+-------+
| D     | WEBFORM | 1     |
+-------+---------+-------+
这将用于像这样的堆叠条形图

+---+---------+---------+
| A | EMAIL   | UNKNOWN |
+---+---------+---------+
| B | EMAIL   | WEBFORM |
+---+---------+---------+
| C | UNKNOWN |         |
+---+---------+---------+
| D | WEBFORM |         |
+---+---------+---------+
我有一些查询可以得到我需要的片段,但我不知道如何组合这些片段来得到最终结果

SELECT mcode, COUNT(mcode) as count
FROM docs
WHERE related = 43
GROUP BY mcode
ORDER By mcode ASC;

+-------+-------+
| MCODE | COUNT |
+-------+-------+
| A     | 2     |
+-------+-------+
| B     | 2     |
+-------+-------+
| C     | 1     |
+-------+-------+
| D     | 1     |
+-------+-------+
我读过一些其他的帖子,建议我可以自己加入表格来得到这个结果?不幸的是,我的sql技能没有那么强

这是一张摆弄桌子的桌子和我的问题

试试这个:

SELECT MCODE, 
CASE WHEN SOURCE IS NULL THEN 'UNKNOWN'
     ELSE SOURCE 
END AS SOURCE, 
COUNT(RELATED) AS COUNT
FROM TEST
WHERE RELATED = 43
GROUP BY MCODE,SOURCE
ORDER BY 3

让我知道它是否适用于您。

SQL Fiddle链接不适用于我。是的,不知道它发生了什么事:-(太棒了。谢谢!“按3点菜”这是怎么回事?3是什么意思?@SportsRacer它的意思是“按第三列点菜”(计数)。如果需要按另一列点菜,请更改它。好的。Cool将其更改为MCODE。谢谢!
SELECT MCODE, 
CASE WHEN SOURCE IS NULL THEN 'UNKNOWN'
     ELSE SOURCE 
END AS SOURCE, 
COUNT(RELATED) AS COUNT
FROM TEST
WHERE RELATED = 43
GROUP BY MCODE,SOURCE
ORDER BY 3