gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:09 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com