簡體   English   中英

查詢從兩個不同的年份列中減去值?

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

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