【发布时间】:2021-09-07 23:19:48
【问题描述】:
我试图了解如何计算一个值在列中出现的次数,并以我可以轻松创建图表的方式输出它。
我有一个表格,将问题存储在一个表格中,将答案存储在另一个表格中。
字段表
| id | key | name |
|---|---|---|
| 1 | ||
| 2 | department | Department |
| 3 | activities_interest | What activities are you interested in? |
元表
| id | field_id | value | form_id |
|---|---|---|---|
| 1 | 1 | foo@bar.com | 1 |
| 2 | 2 | Sales | 1 |
| 3 | 3 | Sport | 1 |
| 4 | 1 | bar@foo.com | 2 |
| 5 | 2 | Sales | 2 |
| 6 | 3 | Cars | 2 |
| 7 | 1 | new@bar.com | 3 |
| 8 | 2 | Marketing | 3 |
| 9 | 3 | Cars | 3 |
| 10 | 1 | fooboo@bar.com | 4 |
| 11 | 2 | IT | 4 |
| 12 | 3 | Food | 4 |
表单的输入将通过下拉菜单完成,因此响应将被限制在一定数量内。
我正在尝试编写一个输出数据如下的脚本
| field_id | value | total |
|---|---|---|
| 2 | Sales | 2 |
| 2 | Marketing | 1 |
| 2 | IT | 1 |
| 3 | Cars | 2 |
| 3 | Sport | 1 |
| 3 | Food | 1 |
对于下面的查询,我深表歉意,但这是我目前所在的位置..
SELECT metas.`id`,
metas.`field_id`,
MAX(CASE WHEN fields.`field_key` = 'department' THEN metas.`meta_value` ELSE NULL END) Department,
MAX(CASE WHEN fields.`field_key` = 'email' THEN metas.`meta_value` ELSE NULL END) Email,
COUNT(fields.`id`) Total
FROM fields
INNER JOIN metas
ON fields.`id` = metas.`field_id`
GROUP BY metas.`item_id`
ORDER BY metas.`item_id`
【问题讨论】:
-
目前在输出中为您提供了什么?
-
每次总数为 15、16 或 17,当然结果还没有分组
-
你为什么需要加入这个?
标签: mysql