每个组件中有多少组成总数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每个组件中有多少组成总数相关的知识,希望对你有一定的参考价值。

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

数据看起来像这样。

+----+---------+-------+---------+
| 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      |
+----+---------+-------+---------+

我想知道的是,每个SOURCE中有多少人构成给定MCODERELATED计数。

例如,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     |
+-------+-------+
SELECT COALESCE(nullif(source,""),"unknown") AS source_document , COUNT(*) AS num
FROM docs 
WHERE related = 43
GROUP BY source_document
ORDER BY num DESC;

+-----------------+-----+
| SOURCE_DOCUMENT | NUM |
+-----------------+-----+
| webform         | 2   |
+-----------------+-----+
| unknown         | 2   |
+-----------------+-----+
| email           | 2   |
+-----------------+-----+

我已经阅读了其他一些帖子,这些帖子表明我可以自己加入表格来获得这个结果吗?不幸的是我的sql技能并不那么强大。

这是表和我的查询的小提琴。

SQL Fiddle

答案

试试这个:

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

请让我知道这对你有没有用。

以上是关于每个组件中有多少组成总数的主要内容,如果未能解决你的问题,请参考以下文章

C语言100个经典算法源码片段

每日一小练——支配值数目

我们可以从 instagram 中获取每个公开个人资料的图像总数是多少

华为机试题 HJ37统计每个月兔子的总数

用于检查应用程序中有多少行代码的 Ruby 脚本

[SRM478]RandomApple