[英]Query to subtract values from two different year columns?
我有一個查詢,該查詢返回的數據集返回兩年不同的結果。 每個位置ID恰好有兩行(不一定按順序):
+------+---------------------------------------+ | year | location_id | unique_1 | data +------+---------------------------------------+ | 1990 | 100 | 343 | 100 | 2000 | 100 | 343 | 200 | 1990 | 55 | 111 | 50 | 2000 | 55 | 111 | 60
我想獲取每一年的結果,並從前一年的數據列中減去前一年的數據列。
像這樣的東西(如果這實際上是有效的MySQL語法,它將返回100),但是它必須適用於所有行:
(SELECT data FROM TABLE
WHERE year = 2000
AND location_id = 100
AND unique_1 = 343 )
MINUS
(SELECT data FROM TABLE
WHERE year = 1990
AND location_id = 100
AND unique_1 = 343 )
如果確保同一location_id
恰好有兩行,則可以這樣操作:
select
a.location_id
, b.data - a.data
from test a
join test b on a.location_id=b.location_id and a.data>b.data
此查詢確保具有相同位置ID的兩行以這樣的方式連接在一起: data
較小的那一行位於a
側, b
則位於b
側。
您可以使用條件聚合來做到這一點:
select t.location_id,
max(case when t.year = 2000 then data
when t.year = 1999 then - data
end) as diff
from table t
group by t.location_id;
使用join連接表的兩個實例,並添加一個減法列:
select first.location_id, first.unique_1, first.data - second.data as result
from (SELECT data FROM TABLE WHERE year = 2000) as first join
(SELECT data FROM TABLE WHERE year = 1990) as second on first.location_id =
second.location_id and first.unique_1 = second.unique_1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.