MySql查询从数据库中以矩阵形式提取数据

标签 mysql matrix

我在数据库中有两列名称和年份的数据。像这样,

name | year
-----------
tim  | 2001
ron  | 2002
tim  | 2003
ron  | 2005
tim  | 2004
pol  | 2002
pol  | 2001
tim  | 2003
pol  | 2004
tim  | 2002

我想输出这样的结果矩阵。

      tim | pol | ron
2001   1  |  1  |  0
2002   1  |  1  |  1
2003   2  |  0  |  0
2004   1  |  1  |  0
2005   0  |  0  |  1

蒂姆 |波尔 | ron按照累计和降序排列即tim(5), pol(3), ron(2)。

数据不限于tim,pol,ron。可以有 n 个不同的名称。

最佳答案

SELECT
  year,
  SUM(name='tim') tim,
  SUM(name='pol') pol,
  SUM(name='ron') ron
FROM
  yourtable
GROUP BY
   year

请参阅 fiddle here .

编辑:如果您需要动态查询,因为值的确切数量可能会有所不同,您可以使用这样的准备语句:

SELECT
  CONCAT('SELECT year,',
  GROUP_CONCAT(sums),
  ' FROM yourtable GROUP BY year')
FROM (
SELECT CONCAT('SUM(name=\'', name, '\') AS `', name, '`') sums
FROM yourtable
GROUP BY name
ORDER BY COUNT(*) DESC
) s
INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

fiddle 是 here .

关于MySql查询从数据库中以矩阵形式提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400206/

相关文章:

javascript - 通过 ajax POST 向 PHP 发送两个值以查询 SQL 数据库

MySQL,使用 MIN() 和 GROUP BY 基于子查询进行选择

Python - 打印矩阵 w/o pprint

Swift 下标函数 - 允许多种返回类型

matlab - 在 Matlab 中取具有 NaN 的矩阵的平均值

c++ - 如何为模板变量赋予随机值?

mysql - SQL条件返回特定日期范围

sql - mysql 程序错误 ERROR 1304 & ERROR 1305

r - 如何计算质心和数据矩阵之间的距离(对于 kmeans 算法)

mysql - SQL返回每组单行