mysql:将一张表中的字段分别分组

标签 mysql group-by

我需要从 MySQL 中获取以下类型数据的平均值:

有一张表:

表1

field_a, field_b, field_c

data_a , data_a , data_c
data_a , data_b , data_c
data_a , data_a , data_c

我需要输出的是(这部分不需要在mysql中,只是解释我需要的数据):

field_a 的 100% 是 data_a

field_b 的 33% 为 data_b,66% 为 data_a

field_c 的 100% 是 data_c

我尝试按每个字段进行分组,但没有给出所需的结果。解决这个问题的最佳方法是什么? (目前我刚刚将其设置为对每个字段运行单独的查询,但有很多字段,所以我希望它们在一个大查询中/更高效一些)。

另外,对标题表示歉意。我真的想不出更好的方法来解释它。请随意编辑更简洁的内容。

最佳答案

我只能想到UNION用途:

(SELECT field_a AS val, COUNT(field_a) AS cnt, 'A' AS fld_name 
    FROM table1 GROUP BY field_a)
UNION
(SELECT field_b AS val, COUNT(field_b) AS cnt, 'B' AS fld_name 
    FROM table1 GROUP BY field_b)
UNION
(SELECT field_c AS val, COUNT(field_c) AS cnt, 'C' AS fld_name 
    FROM table1 GROUP BY field_c)

它将为我们提供每行中包含的记录集:

  • 字段值,
  • 表中此类值的数量,
  • 字段名称。

关于mysql:将一张表中的字段分别分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12528436/

相关文章:

MySQL group by count(1) 和 having by

php - Msql Select and group from db where team_1 和 team_2 相同但在条目中相反

php - 如何设置 "temporary mysql session"系统

mysql - sql搜索字符串并获取所有行内容

Mysql查询分组问题

vb.net - LINQ Group by VB.Net中具有多个属性

r - 总结使用带有 for 循环的 dplyr

mysql - 限制专精

mysql - 在 SQL 数据库中存储时间戳值

python - Pandas 分组和计数