【问题标题】:Counting number of times value appears in column across all rows with MySQL使用 MySQL 计算所有行中列中出现的次数
【发布时间】:2021-09-07 23:19:48
【问题描述】:

我试图了解如何计算一个值在列中出现的次数,并以我可以轻松创建图表的方式输出它。

我有一个表格,将问题存储在一个表格中,将答案存储在另一个表格中。

字段表

id key name
1 email Email
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


【解决方案1】:
SELECT field_id, value, count(*) FROM metas group by value;

我认为你不需要加入这个,因为你想要输出的字段只能来自元。

【讨论】:

  • 感谢您的回复。为了让事情变得更简单,我需要显示其他列,我删除了这些列。
  • 这有帮助吗,还是我应该通过加入来更新答案?
  • 我肯定比以前更接近了!计数返回的数字并不完全正确,但它肯定开始形成我所期望的样子。如果可以,那就太好了,谢谢
  • 您能否更新一下您的确切要求以及 count 返回的数字如何不正确?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
相关资源
最近更新 更多