程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用SQL创建矩阵大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何使用sqL创建矩阵?

开发过程中遇到如何使用sqL创建矩阵的问题如何解决?下面主要结合日常开发的经验,给出你关于如何使用sqL创建矩阵的解决方法建议,希望对你解决如何使用sqL创建矩阵有所启发或帮助;

这似乎可以解决问题,并在PostgreSQl 9.1上进行了测试。几乎肯定会需要对它进行调整以使其适合sql Server(任何人都可以随时更新我对此的回答)。

SELECT start AS state,
    SUM((dest = 'MA')::int) AS MA,
    SUM((dest = 'NJ')::int) AS NJ,
    SUM((dest = 'NY')::int) AS NY,
    SUM((dest = 'OH')::int) AS OH
FROM (
    SELECT state1 AS start, state2 AS dest
        FROM routes
    union all
    SELECT state2 AS start, state1 AS dest
        FROM routes
) AS s
GROUP BY start
ORDER BY start;

但是请注意,我的输出与您的输出略有不同-我不确定这是因为您的示例输出是错误的,还是因为我误解了您的要求:

 state | ma | nj | ny | oh 
-------+----+----+----+----
 MA    |  0 |  0 |  1 |  1
 NJ    |  0 |  0 |  1 |  0
 NY    |  1 |  1 |  0 |  0
 OH    |  1 |  0 |  0 |  0
(4 rows)

此查询的工作方式是查询表两次,一次查询state1-> state2路由,第二次查询state2-> state1路由,然后将它们连接在一起UNION ALL

然后,对于每个目标状态,它sum()为该行的原始状态运行一个。

该策略应易于适应任何RDBMS。

解决方法

使用这样的地理数据记录:

START                  |  END

CITY1    |   STATE1    |   CITY2    |  STATE2
----------------------------------------------
New York |    NY       |  Boston    |   MA
Newark   |    NJ       |  Albany    |   NY
Cleveland|    OH       |  Cambridge |   MA

我想输出类似这样的内容,其中它以矩阵形式显示START / END配对:

   |  MA  |  NJ  |  NY  |  OH
------------------------------
MA |  0   |  0   |  1   |  0
NJ |  0   |  0   |  1   |  0
NY |  1   |  0   |  0   |  0
OH |  1   |  0   |  0   |  0

我可以看到如何GROUP BY以及COUNT将如何找到数据,但是我对如何显示为矩阵一无所知。有人有什么想法吗?

大佬总结

以上是大佬教程为你收集整理的如何使用SQL创建矩阵全部内容,希望文章能够帮你解决如何使用SQL创建矩阵所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。