回答

收藏

SQl服务器中比较的构建矩阵

技术问答 技术问答 193 人阅读 | 0 人回复 | 2023-09-12

我有一个关于相当复杂的问题SQL查询的问题。(我在用。sql server)在我的数据库中,我有一组类和一组技能(多对多关系)。
, L. f" g+ Q; s, z$ R我想建立一个构建矩阵比较的查询3 V$ I, c5 n0 S4 q0 A( u; W2 g
(类似于如何使用SQL查询创建矩阵),但如果可能的话,不要硬编码每个列。    我希望通过以下方式比较每个类对的重叠量:
* d2 S, W( N9 v7 S/ {5 Toverlap = (Skills_Both_Classes_Have / Total_Skills) * 100我的主要问题是如何通过修改/显示来找到每个类的重叠部分。9 G( ]/ c1 e& \2 ?. y
类表格式:* N/ n* C1 H$ f7 m
|ClassID |   ClassName |------------------------|      |    Class1   ||2        |    Class2   ||3        |    Class3   |技能表的格式:" t' @" E% E+ s) q8 Z
|SkillID |   SkillName |------------------------|      |    Skill1   ||2       |    Skill2   ||3        |    Skill3   |中位数表格式:# B2 u3 R. L5 q( b; I" H
|ClassID |SkillID|------------------|      |   1   ||      |  2    ||      |  3   ||2        |  2    ||2        |  4    ||2        |  5   ||3        |   1   ||3        |  2    ||3        |  5   |示例输出:
3 q+ ?: s" z- h                            |Class1 |Class2 |Class3 | --------------------------------Class1 |  100  |  033  |  066  |Class2 |  033  |  100  |  066  |Class3 |  066  |  066  |  100  |我一直在玩数据透视等工具,但我不能用最好的方式SQL中实现。
0 y" y" B' x3 Z在任何其他语言中,我将为每个循环使用几个,然后将输出发送到数组,但这是SQL这似乎不是一个很好的解决方案。这不是为了任务,而是为了我自己的好奇心。5 J# \2 _/ f$ [1 k+ J
                                                               
6 A* V' R; w( [) t    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则