首页 > 数据库 > mysql教程 > 如何在 SQLite 中将数据从长格式转换为宽格式?

如何在 SQLite 中将数据从长格式转换为宽格式?

Susan Sarandon
发布: 2025-01-10 12:51:46
原创
478 人浏览过

How to Pivot Data from Long to Wide Format in SQLite?

SQLite 数据库数据透视:将长格式数据转换为宽格式数据

在数据库管理中,数据透视是一种将数据从长格式(每行代表具有多个属性的单个观察值)转换为宽格式(每行代表一个不同的属性,列代表这些属性的值)的技术。当处理以长格式存储数据的表(如下所示)时,此过程特别有用:

<code>## studid ## ## subjectid ##  ## marks ##
A1            3                50
A1            4                60
A1            5                70
B1            3                60
B1            4                80
C1            5                95</code>
登录后复制

问题:

目标是将上面的表转换为宽格式,其中每位学生都有一行代表他们的姓名和每门科目的分数。期望的输出应如下所示:

<code>## studid ## ## name## ## subjectid_3 ## ## subjectid_4 ## ## subjectid_5 ##
A1        Raam        50                60                 70
B1        Vivek       60                80                NULL
C1        Alex       NULL              NULL                95</code>
登录后复制

使用 CASE 语句和 GROUP BY 子句的解决方案:

在 SQLite 中实现此目标的一种方法是结合使用 CASE 语句和 GROUP BY 子句:

<code class="language-sql">SELECT
    si.studid,
    si.name,
    SUM(CASE WHEN md.subjectid = 3 THEN md.marks END) AS subjectid_3,
    SUM(CASE WHEN md.subjectid = 4 THEN md.marks END) AS subjectid_4,
    SUM(CASE WHEN md.subjectid = 5 THEN md.marks END) AS subjectid_5
FROM student_info si
JOIN markdetails md ON
    md.studid = si.studid
GROUP BY si.studid, si.name;</code>
登录后复制

使用左外连接的解决方案:

另一种方法涉及使用左外连接来组合每门科目的学生信息和分数:

<code class="language-sql">SELECT
    u.stuid,
    u.name,
    s3.marks AS subjectid_3,
    s4.marks AS subjectid_4,
    s5.marks AS subjectid_5
FROM
    student_info u
LEFT OUTER JOIN markdetails s3 ON
    u.stuid = s3.stuid
    AND s3.subjectid = 3
LEFT OUTER JOIN markdetails s4 ON
    u.stuid = s4.stuid
    AND s4.subjectid = 4
LEFT OUTER JOIN markdetails s5 ON
    u.stuid = s5.stuid
    AND s5.subjectid = 5;</code>
登录后复制

这两个 SQL 查询都将生成所需的宽格式表,从而更轻松地分析和可视化数据。

以上是如何在 SQLite 中将数据从长格式转换为宽格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板