Home > database >  SQL - get substraction between 2 records
SQL - get substraction between 2 records

Time:06-23

I have a question about SQL (I use MySQL), I don't know if it's possible but I ask you. I am currently doing a particular query, but I am not able to implement this. The image in below of this message, is a table where there are result of the top 2 result (by best column) in each country.

The query that I would like to implement this is getting difference between top2 and top1 in countryRank in each countryId. I would like to have the result like this:

countryId difference (2-1)
Afghanistan 30
Albania 83
... ...

Attention: some country doesn't have value 2 as countryRank like Angola in image, in this case I would like to ignore this.

ranking

Thanks for your attention!

CodePudding user response:

Split the recordset into two and use a join or use a window function. Sample here in the link.

CodePudding user response:

You can do it in a single query like this:

SELECT countryId,
       MAX(IF(countryRank=2,best,0)) - MAX(IF(countryRank=1,best,0)) AS "difference (2-1)"
 FROM mytable
GROUP BY countryId;

But on a country where there's no rank=2 (like Angola), the result will return negative -2563.

countryId difference (2-1)
Afghan 30
Albania 83
Algeria 399
Andorra 158
Angola -2563
Argentina 33
Armenia 105

Demo fiddle

  • Related