簡體   English   中英

SQL查詢后,如何得到兩條記錄之間的區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM