如何计算mysql查询结果

dsf9zpds  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(255)

例如,我有一个mysql表作为流:

  1. | ID | name | number | date |
  2. | -- | ------ | ------ | ---------- |
  3. | 1 | apple | 2 | 2018-04-10 |
  4. | 2 | orange | 3 | 2018-04-10 |
  5. | 3 | apple | 1 | 2018-04-11 |
  6. | 4 | orange | 5 | 2018-04-11 |

我想用一个查询来比较苹果和橘子在白天的变化。
大约在2018-04-10到2018-04-11之间,苹果的变化值是-1,橙色是3

m1m5dgzv

m1m5dgzv1#

你需要自我加入。
sql演示感谢@terry

  1. SELECT t1.name,
  2. t1.date as today,
  3. t2.date as yesterday,
  4. t1.number as today_value,
  5. t2.number as yesterday_value,
  6. t1.number - COALESCE(t2.number, t1.number) as difference
  7. FROM yourTable t1
  8. LEFT JOIN yourTable t2
  9. ON t1.date = DATE_ADD( t2.date, INTERVAL 1 DAY)
  10. AND t1.name = t2.name
  11. ORDER BY t1.name, t1.date

我添加了一个条件,所以如果你没有前一天考虑没有任何变化,所以差异是0。
输出

  1. | name | today | yesterday | today_value | yesterday_value | difference |
  2. |--------|------------|------------|-------------|-----------------|------------|
  3. | apple | 2018-04-10 | (null) | 2 | (null) | 0 |
  4. | apple | 2018-04-11 | 2018-04-10 | 1 | 2 | -1 |
  5. | apple | 2018-04-12 | 2018-04-11 | 10 | 1 | 9 |
  6. | orange | 2018-04-10 | (null) | 3 | (null) | 0 |
  7. | orange | 2018-04-11 | 2018-04-10 | 5 | 3 | 2 |
  8. | orange | 2018-04-12 | 2018-04-11 | 50 | 5 | 45 |
  9. | orange | 2018-04-15 | (null) | 10 | (null) | 0 |
展开查看全部

相关问题