トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-213 グラフの平行移動を意識したクエリ
SQLパズル
numberTable
Val
---
1
4
7
13
32
39
99
100
105
110
111
157
234
Valを10区切りでの値の変換を行って、
以下の出力を行う。
出力結果
Val Low UP
--- --- ---
1 1 10
4 1 10
7 1 10
13 11 20
32 31 40
39 31 40
99 91 100
100 91 100
105 101 110
110 101 110
111 111 120
157 151 160
234 231 240
データ作成スクリプト
create table numberTable(Val) as
select 1 from dual union
select 4 from dual union
select 7 from dual union
select 13 from dual union
select 32 from dual union
select 39 from dual union
select 99 from dual union
select 100 from dual union
select 105 from dual union
select 110 from dual union
select 111 from dual union
select 157 from dual union
select 234 from dual;
SQL
select Val,
trunc(Val-1,-1)+ 1 as Low,
trunc(Val-1,-1)+10 as UP
from numberTable;
解説
trunc(Val-1,-1)+ 1
は
y = trunc(Val,-1)+ 1
のグラフを、X軸方向に+1平行移動したと考えてます。
放物線の移動
■■■■■■■■■■■■■■■■■■■■■■■■
trunc(Val,-1)+ 1 trunc(Val-1,-1)+ 1
99 → 91 99 → 91
100 → 101 100 → 91
101 → 101 101 → 101
102 → 101 102 → 101
103 → 101 103 → 101
104 → 101 104 → 101
105 → 101 105 → 101
106 → 101 106 → 101
107 → 101 107 → 101
108 → 101 108 → 101
109 → 101 109 → 101
110 → 111 110 → 101
111 → 111 111 → 111