【发布时间】:2020-11-19 09:33:33
【问题描述】:
我有很多数据,其中有年份列
只要我设置了开始年份和结束年份,我想检查它是否连续有相同的数据
如果我将 2015 年设置为开始年份并将 2017 年设置为结束年份, 我必须得到具有相同数据 5 年的列
我尝试在查询中使用between,但我什至不知道该怎么做
数据看起来像这样
SELECT year,team,equip,result FROM my_table WHERE result = 41 AND year=2015
+------+-------+--------+--------+
| year | team | equip | result |
+------+-------+--------+--------+
| 2015 | teamA | equipA | 41 |
+------+-------+--------+--------+
| 2015 | teamA | equipB | 41 |
+------+-------+--------+--------+
| 2015 | teamB | equipA | 41 |
+------+-------+--------+--------+
| 2015 | teamB | equipB | 41 |
+------+-------+--------+--------+
| 2015 | teamC | equipA | 41 |
+------+-------+--------+--------+
| 2015 | teamC | equipB | 41 |
+------+-------+--------+--------+
...
SELECT year,team,equip,result FROM my_table WHERE result = 41 AND year=2016
+------+-------+--------+--------+
| year | team | equip | result |
+------+-------+--------+--------+
| 2016 | teamA | equipB | 41 |
+------+-------+--------+--------+
| 2016 | teamB | equipA | 41 |
+------+-------+--------+--------+
| 2016 | teamC | equipA | 41 |
+------+-------+--------+--------+
| 2016 | teamC | equipB | 41 |
+------+-------+--------+--------+
...
SELECT year,team,equip,result FROM my_table WHERE result = 41 AND year=2017
+------+-------+--------+--------+
| year | team | equip | result |
+------+-------+--------+--------+
| 2017 | teamA | equipA | 41 |
+------+-------+--------+--------+
| 2017 | teamB | equipA | 41 |
+------+-------+--------+--------+
| 2017 | teamB | equipB | 41 |
+------+-------+--------+--------+
| 2017 | teamC | equipA | 41 |
+------+-------+--------+--------+
...
我想要的是这个:
+-------+--------+--------+
| team | equip | result |
+-------+--------+--------+
| teamB | equipA | 41 |
+-------+--------+--------+
| teamC | equipA | 41 |
+-------+--------+--------+
...
我想获取 3 年(2015~2017)具有相同数据的列
我该怎么做?
【问题讨论】:
-
做一个 GROUP BY,使用 HAVING 确保所有 3 年都在那里。
-
如果我将 2015 年设置为开始年份并将 2017 年设置为结束年份,我必须得到具有相同数据 5 年的列 我已经计算了 3 次,并且总是结果是 3 年,而不是 5 年......