[英]SQL after a query, how to get difference between two records?
我想查询后得到两个记录之间的差异。
这是查询:
select count(t.customerid) as NumberofCustomers, st.regionid, v.vendorid
from region r join store st
on r.regionid = st.regionid
join salestransaction t
on st.storeid = t.storeid
join soldvia s
on t.tid = s.tid
join product p
on s.productid = p.productid
join vendor v
on p.vendorid = v.vendorid
where v.vendorid = 2
group by st.regionid, v.vendorid
这是查询产生的结果:
NumberofCustomers regionid vendorid
495 1 2
329 2 2
如何获得第1行和第2行中的NumberofCustomers之间的区别? 我尝试使用差异来实现此目的,但是并没有给我想要的结果。
任何帮助,将不胜感激。
你的目标很奇怪。 但是我为您提供了有趣而怪异的解决方案:
SELECT t.*,
IF(@prev IS NULL, t.NumberofCustomers, (t.NumberofCustomers- @prev)) difference,
@prev := t.NumberofCustomers
FROM )
select count(t.customerid) as NumberofCustomers,
st.regionid, v.vendorid
from region r join store st
on r.regionid = st.regionid
join salestransaction t
on st.storeid = t.storeid
join soldvia s
on t.tid = s.tid
join product p
on s.productid = p.productid
join vendor v
on p.vendorid = v.vendorid
where v.vendorid = 2
group by st.regionid, v.vendorid ) t
如果只有两个区域,则可以使用条件聚合:
select v.vendorid,
sum(st.regionid = 1) as NumRegion1,
sum(st.regionid = 2) as NumRegion2,
(sum(st.regionid = 1) - sum(st.regionid = 2)) as diff
from region r join
store st
on r.regionid = st.regionid join
salestransaction t
on st.storeid = t.storeid join
soldvia s
on t.tid = s.tid join
product p
on s.productid = p.productid join
vendor v
on p.vendorid = v.vendorid
where v.vendorid = 2
group by v.vendorid;
返回的数字都是一行而不是两行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.