質問するログイン新規登録

回答編集履歴

1

回答追加

2019/03/03 09:07

投稿

javahack
javahack

スコア1088

answer CHANGED
@@ -1,1 +1,21 @@
1
- カラムのyearが数値型であれば、入力値との差分を計算してその絶対値が最小のレコードを取得でいけると思います。
1
+ カラムのyearが数値型であれば、入力値との差分を計算してその絶対値が最小のレコードを取得でいけると思います。
2
+
3
+ **追記**
4
+ 申し訳ありません。単純に考えていましたが副問い合わせが必要な気がしてきました。
5
+
6
+ SQLを書いてみました。
7
+
8
+ ```SQL
9
+ SELECT t1.*,MIN(ABS(t1.year - 2020)) AS diff_year
10
+ FROM salary t1
11
+ INNER JOIN
12
+ (
13
+ SELECT MAX(name) AS max_name,MIN(ABS(year - 2020)) AS diff_year
14
+ FROM salary
15
+ GROUP BY name
16
+ ) t2
17
+ ON t1.name = t2.max_name AND MIN(ABS(t1.year - 2020)) = t2.diff_year
18
+ ORDER BY t1.diff_year ASC;
19
+ ```
20
+
21
+ 久しぶりなのと検証環境が手元にないのでエラーがでたらすみません。