gpt4 book ai didi

mysql - 这个矩阵乘法在 SQL 中是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 07:30:27 28 4
gpt4 key购买 nike

完全公开,我是 SQL 菜鸟

给定两个稀疏矩阵A和B,定义为:

A(行号、列号、值)和 B(行号、列号、值)

我不明白这个查询如何表示两个矩阵的乘法:

SELECT A.row_number, B.column_number, SUM(A.value * B.value)
FROM A, B
WHERE A.column_number = B.row_number
GROUP BY A.row_number, B.column_number

我的困惑在于 SUM 语法和 GROUP BY/SELECT 语法

所以对于我的 GROUP BY/SELECT 混淆,我不明白为什么表达式

A.row_number 和 B.column_number 是 SELECT 语句后必需的

当我们已经在使用 SELECT 和 WHERE 时,为什么还要指定它?对我来说,这似乎是在说我们想使用这些表达式(A.row_number 和 B.column_number)进行 SELECT,即使我们已经从 WHERE 返回了一个表。只说 SELECT * 不是更有意义吗?我假设 GROUP BY 只需要您输入它在 SELECT 语句中使用的表达式,但我不确定。

对于 SUM,我只想澄清一下,SUM 仅使用 WHERE 返回的 A.value 和 B.value 对吗?否则,您会将所有 A.value 与所有 B.value 相乘。

澄清其中任何一个都会非常有帮助。谢谢!

最佳答案

create table A
( column_number int,
row_number int,
value int
);
create table B
( column_number int,
row_number int,
value int
);

insert A (column_number,row_number,value) values (1,1,1),(1,2,2),(2,1,3),(2,2,4);
insert B (column_number,row_number,value) values (1,1,10),(1,2,20),(2,1,30),(2,2,40);

具有旧样式(非显式)的数据没有聚合或分组依据:

SELECT A.row_number as Ar, B.column_number as Bc,
A.value as Av,B.value as Bv,A.value*B.value as product
FROM A, B
WHERE A.column_number = B.row_number

+------+------+------+------+---------+
| Ar | Bc | Av | Bv | product |
+------+------+------+------+---------+
| 1 | 1 | 1 | 10 | 10 |
| 2 | 1 | 2 | 10 | 20 |
| 1 | 1 | 3 | 20 | 60 |
| 2 | 1 | 4 | 20 | 80 |
| 1 | 2 | 1 | 30 | 30 |
| 2 | 2 | 2 | 30 | 60 |
| 1 | 2 | 3 | 40 | 120 |
| 2 | 2 | 4 | 40 | 160 |
+------+------+------+------+---------+

看到上面的内容,下面的内容就更清楚了:

SELECT A.row_number, B.column_number,sum(A.value * B.value) as theSum
FROM A, B
WHERE A.column_number = B.row_number
GROUP BY A.row_number, B.column_number
+------------+---------------+--------+
| row_number | column_number | theSum |
+------------+---------------+--------+
| 1 | 1 | 70 |
| 1 | 2 | 150 |
| 2 | 1 | 100 |
| 2 | 2 | 220 |
+------------+---------------+--------+

关于mysql - 这个矩阵乘法在 SQL 中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31631752/

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