gpt4 book ai didi

mysql - MySQL中根据两个select的差异进行排序

转载 作者:行者123 更新时间:2023-11-29 09:31:57 26 4
gpt4 key购买 nike

我有一个这样的表:

groupX    groupY    quantity
A B 10
A C 2
C D 7
B A 13
C B 1
D B 9

因此,相同的个体出现在 groupX 和 groupY 列中。我想编写一个 Select 来实现以下目的:

Select 
(Select groupX, sum(quantity) group by groupX) as M
- (Select groupY, sum(quantity)
group by groupY) as N
ORDER BY M-N Desc

我的意思是,我需要将每个人出现在 groupX 和 groupY 时的数量相加,然后计算每个人的第一个和第二个数量之间的差异。最后,我需要查询来按差异对个体进行排序。

当然,我写的查询不起作用。

最佳答案

以此表为来源

CREATE TABLE tableA
(`groupX` varchar(1), `groupY` varchar(1), `quantity` int)
;

INSERT INTO tableA
(`groupX`, `groupY`, `quantity`)
VALUES
('A', 'B', 10),
('A', 'C', 2),
('C', 'D', 7),
('B', 'A', 13),
('C', 'B', 1),
('D', 'B', 9)
;

你得到这个声明

SELECT T1.groupX groupname, (sum1 - sum2)  as res
From
(SELECT groupX ,Sum(quantity) sum1 From tableA Group by groupX) T1
inner join (SELECT groupY,Sum(quantity) sum2 From tableA Group by groupY) T2
On T1.groupX = T2.groupY
ORDER by res;

你将会得到

groupname  res
B -7
A -1
D 2
C 6

由于我不知道您的所有数据,因此最好使用左连接,这将包括 groupX 中在 groupY 中没有相应组的所有唯一成员。对于右连接,反之亦然

请参阅此处的示例 https://dbfiddle.uk/?rdbms=mysql_5.7&fiddle=6c2facaaf6564d4025f24f6aab35adf7

关于mysql - MySQL中根据两个select的差异进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58528646/

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