[英]select sum values on different conditions in sql
这是我接近自己想要的东西时遇到的桌子。
Equip unit qty
---------------
a 01 2
a 01 3
a 09 14
b 01 5
b 09 28
我正在尝试查找值3 + 14 + 5 + 28。
我想对不同设备和不同单位中的所有值求和,但如果单位相同,则应选择最大值(在这种情况下,我要选择3而不是2)。
我一直在努力寻找方法,但仍然不知道。 您将如何解决该问题?
使用子查询:
select sum(qty)
from (select equip, unit, max(qty) as qty
from t
group by equip, unit
) eu;
这是Rextester中的一个示例。
您也可以在from
没有子查询的情况下执行此操作,假设最大值不重复:
select sum(qty)
from t
where qty = (select max(t2.qty) from t t2 where t2.equip = t.equip and t2.unit = t.unit);
试试这个查询-
;WITH CTE
AS (
SELECT Equipment
,Unit
,Quantity
,Row_Number() OVER (
PARTITION BY Equipment
,Unit ORDER BY Quantity DESC
) AS RowNum
FROM SampleTable
)
SELECT Sum(Quantity) AS Total
FROM CTE
WHERE RowNum = 1;
-从下面的脚本创建表
create table eqip(equip varchar(3), unit int, qty int);
-插入记录以进行测试查询
insert into eqip
values('a' , 01 , 2),
('a', 01 , 3 ) ,
('a' , 09 , 14),
('b' , 01 , 5),
('b' , 09 , 28)
-在查询下面运行以获得结果。 其中Row_Number按单位和数量获取PARTITION。
select sum(qty) as total_quantity from(
select Row_Number() OVER (PARTITION BY equip,unit ORDER BY qty DESC) AS row_num, equip, unit, qty from eqip
) as A where row_num=1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.