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