自社のブランドを運用する上で、こちらが思うターゲット層が購入に至っているか確かめる手段としては、年齢を重要視する企業も多いかと思います。
購買層を20代に想定して売り出したものが40代にばかり売れてしまう。
若年層に対してはエントリー商品から購入いただき、徐々にプレステージな商品へと導き出すような商品アプローチができているか、自社が思う顧客育成との乖離など。
実際、売上データを見る際には購入時の年齢と今時点の年齢のフィールドを用意してあげると分析する人にとって親切ですね。
今回は売上データではなく、少し趣を変え、私の好きなボクサーであるJorge Linares選手が何歳の時に、誰と戦い、何のタイトルを取ったのかがわかるようなSQLでもって、年齢を算出するSQLをご紹介したく思います。
まずはJorge Linaresについては以下の通りです。
ホルヘ・リナレス
ホルヘ・リナレス(Jorge Luis Linares Palencia、男性、1985年8月22日 – )は、ベネズエラのプロボクサー。バリナス出身。元WBC世界フェザー級王者。元WBA世界スーパーフェザー級王者。元WBC世界ライト級王者。元WBA世界ライト級王者。世界3階級制覇王者。帝拳ジム所属。
出典:Wikipedia https://ja.wikipedia.org/wiki/ホルヘ・リナレス
jorgesrecordというテーブルを作成します。
なお、今回の環境はPostgreSQL 9.6.2で確認してます。
データは以下の通りです。※表示の関係上一部の列、最近5試合のみ表示
no | date | result | record | opponent | resulttype | resultround | resulttime | city | country |
---|---|---|---|---|---|---|---|---|---|
52 | 2020/02/14 | Win | 47–5 | Carlos Morales | KO | 4 | 2:09 | California | U.S. |
51 | 2019/09/07 | Win | 46–5 | Al Toyogon | UD | 10 | Tokyo | Japan | |
50 | 2019/01/18 | Loss | 45–5 | Pablo César Cano | TKO | 1 | 2:48 | New York | U.S. |
49 | 2018/09/29 | Win | 45–4 | Abner Cotto | KO | 3 | 1:31 | California | U.S. |
48 | 2018/05/12 | Loss | 44–4 | Vasyl Lomachenko | TKO | 10 | 2:08 | New York | U.S. |
データは以下で作成できます。
--テーブル作成
create table jorgesrecord (
no numeric
,date date
,result varchar(4)
,record varchar(5)
,opponent varchar(50)
,resulttype varchar(3)
,resultround numeric
,resulttime varchar(5)
,location varchar(50)
,city varchar(20)
,country varchar(20)
,notes varchar(100)
);
--データセット
insert into jorgesrecord ( no, date, result, record, opponent, resulttype, resultround, resulttime, location, city, country, notes)
values
(52, '2020/02/14', 'Win', '47–5', 'Carlos Morales', 'KO', 4, '2:09', 'Honda Center', 'California', 'U.S.', ''),
(51, '2019/09/07', 'Win', '46–5', 'Al Toyogon', 'UD', 10, '', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(50, '2019/01/18', 'Loss', '45–5', 'Pablo César Cano', 'TKO', 1, '2:48', 'Hulu Theater', 'New York', 'U.S.', 'For WBC International Silver super lightweight title'),
(49, '2018/09/29', 'Win', '45–4', 'Abner Cotto', 'KO', 3, '1:31', 'Fantasy Springs Resort Casino', 'California', 'U.S.', ''),
(48, '2018/05/12', 'Loss', '44–4', 'Vasyl Lomachenko', 'TKO', 10, '2:08', 'Madison Square Garden', 'New York', 'U.S.', 'Lost WBA and The Ring lightweight titles'),
(47, '2018/01/27', 'Win', '44–3', 'Mercito Gesta', 'UD', 12, '', 'The Forum', 'California', 'U.S.', 'Retained WBA and The Ring lightweight titles'),
(46, '2017/09/23', 'Win', '43–3', 'Luke Campbell', 'SD', 12, '', 'The Forum', 'California', 'U.S.', 'Retained WBA and The Ring lightweight titles'),
(45, '2017/03/25', 'Win', '42–3', 'Anthony Crolla', 'UD', 12, '', 'Manchester Arena', 'Manchester', 'England', 'Retained WBA and The Ring lightweight titles'),
(44, '2016/09/24', 'Win', '41–3', 'Anthony Crolla', 'UD', 12, '', 'Manchester Arena', 'Manchester', 'England', 'Won WBA and vacant The Ring lightweight titles'),
(43, '2015/10/10', 'Win', '40–3', 'Ivan Cano', 'KO', 4, '0:58', 'Poliedro', 'Caracas', 'Venezuela', 'Retained WBC lightweight title'),
(42, '2015/05/30', 'Win', '39–3', 'Kevin Mitchell', 'TKO', 10, '2:57', 'The O2 Arena', 'London', 'England', 'Retained WBC lightweight title'),
(41, '2014/12/30', 'Win', '38–3', 'Javier Prieto', 'KO', 4, '1:50', 'Metropolitan Gymnasium', 'Tokyo', 'Japan', 'Won vacant WBC lightweight title'),
(40, '2014/08/16', 'Win', '37–3', 'Ira Terry', 'KO', 2, '1:21', 'StubHub Center', 'California', 'U.S.', ''),
(39, '2014/03/08', 'Win', '36–3', 'Nihito Arakawa', 'UD', 10, '', 'MGM Grand Garden Arena', 'Nevada', 'U.S.', ''),
(38, '2013/11/10', 'Win', '35–3', 'Francisco Contreras', 'TKO', 1, '3:08', 'Ryōgoku Kokugikan', 'Tokyo', 'Japan', ''),
(37, '2013/08/25', 'Win', '34–3', 'Berman Sanchez', 'TKO', 3, '1:09', 'Ariake Coliseum', 'Tokyo', 'Japan', ''),
(36, '2013/03/16', 'Win', '33–3', 'David Rodela', 'TKO', 8, '2:51', 'Grand Oasis', 'Cancún', 'Mexico', ''),
(35, '2012/10/07', 'Win', '32–3', 'Héctor Velázquez', 'UD', 10, '', 'Memorial Auditorium', 'California', 'U.S.', ''),
(34, '2012/03/31', 'Loss', '31–3', 'Sergio Thompson', 'TKO', 2, '2:27', 'Grand Oasis', 'Cancún', 'Mexico', ''),
(33, '2011/10/15', 'Loss', '31–2', 'Antonio DeMarco', 'TKO', 11, '2:32', 'Staples Center', 'California', 'U.S.', 'For vacant WBC lightweight title'),
(32, '2011/05/28', 'Win', '31–1', 'Adrian Verdugo', 'TKO', 7, '1:49', 'Mazatlan International Center', 'Mazatlán', 'Mexico', ''),
(31, '2010/10/24', 'Win', '30–1', 'Jesús Chávez', 'RTD', 4, '3:00', 'Ryōgoku Kokugikan', 'Tokyo', 'Japan', ''),
(30, '2010/07/31', 'Win', '29–1', 'Rocky Juarez', 'UD', 10, '', 'Mandalay Bay Events Center', 'Nevada', 'U.S.', 'Won WBA Fedelatin interim lightweight title'),
(29, '2010/03/27', 'Win', '28–1', 'Francisco Lorenzo', 'MD', 10, '', 'Polideportivo José María Vargas', 'La Guaira', 'Venezuela', ''),
(28, '2009/10/10', 'Loss', '27–1', 'Juan Carlos Salgado', 'TKO', 1, '1:13', 'Yoyogi National Gymnasium', 'Tokyo', 'Japan', 'Lost WBA super featherweight title'),
(27, '2009/06/27', 'Win', '27–0', 'Josafat Perez', 'TKO', 8, '1:40', 'Plaza de Toros', 'Nuevo Laredo', 'Mexico', 'Retained WBA super featherweight title'),
(26, '2008/11/28', 'Win', '26–0', 'Whyber Garcia', 'TKO', 5, '1:08', 'Atlapa Convention Centre', 'Panama City', 'Panama', 'Won vacant WBA super featherweight title'),
(25, '2007/12/15', 'Win', '25–0', 'Gamaliel Díaz', 'KO', 8, '2:02', 'Plaza de Toros', 'Cancún', 'Mexico', 'Retained WBC featherweight title'),
(24, '2007/07/21', 'Win', '24–0', 'Óscar Larios', 'TKO', 10, '2:37', 'Mandalay Bay Events Center', 'Nevada', 'U.S.', 'Won vacant WBC featherweight title'),
(23, '2007/02/03', 'Win', '23–0', 'Ramiro Lara', 'TKO', 3, '1:37', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(22, '2006/10/07', 'Win', '22–0', 'Humberto Martinez', 'TKO', 6, '2:34', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(21, '2006/06/03', 'Win', '21–0', 'Pedro Navarrete', 'UD', 10, '', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(20, '2006/04/01', 'Win', '20–0', 'Saohin Srithai Condo', 'UD', 10, '', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(19, '2006/01/07', 'Win', '19–0', 'Jeffrey Onate', 'KO', 1, '1:59', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(18, '2005/11/03', 'Win', '18–0', 'Denchai Sor Tiebkoon', 'TKO', 1, '2:30', '', 'Seoul', 'South Korea', ''),
(17, '2005/09/25', 'Win', '17–0', 'Ayon Naranjo', 'UD', 6, '', 'Yokohama Arena', 'Yokohama', 'Japan', ''),
(16, '2005/08/13', 'Win', '16–0', 'Jesus Perez', 'RTD', 4, '3:00', 'Circulo Militar', 'Maracay', 'Venezuela', ''),
(15, '2005/05/26', 'Win', '15–0', 'Jean Javier Sotelo', 'TKO', 2, '1:56', 'Estadio Luna Park', 'Buenos Aires', 'Argentina', 'Won vacant WBA Fedecentro featherweight title'),
(14, '2005/04/16', 'Win', '14–0', 'Luis Perez Vicente', 'KO', 4, '1:49', 'Nippon Budokan', 'Tokyo', 'Japan', ''),
(13, '2005/02/05', 'Win', '13–0', 'Melvin Ayudtud', 'KO', 1, '2:07', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(12, '2004/12/03', 'Win', '12–0', 'Rafael Castillo', 'TKO', 4, '2:16', 'Figali Convention Center', 'Panama City', 'Panama', ''),
(11, '2004/10/02', 'Win', '11–0', 'Sung-Hoon Park', 'KO', 1, '2:42', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(10, '2004/08/07', 'Win', '10–0', 'Renan Acosta', 'UD', 10, '', 'Korakuen Hall', 'Tokyo', 'Japan', 'Won vacant WBA Fedelatin featherweight title'),
(9, '2004/05/01', 'Win', '9–0', 'Michael Domingo', 'UD', 10, '', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(8, '2004/01/31', 'Win', '8–0', 'Hugo Rafael Soto', 'UD', 10, '', 'Poliedro', 'Caracas', 'Venezuela', 'Won vacant WBA Fedelatin super bantamweight title'),
(7, '2003/10/18', 'Win', '7–0', 'Pederito Laurente', 'UD', 10, '', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(6, '2003/09/20', 'Win', '6–0', 'Jung-Keun Woo', 'KO', 2, '2:12', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(5, '2003/07/12', 'Win', '5–0', 'Thunder Ito', 'TKO', 3, '2:44', 'Pacifico', 'Yokohama', 'Japan', ''),
(4, '2003/04/19', 'Win', '4–0', 'Ariel Austria', 'UD', 8, '', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(3, '2003/03/15', 'Win', '3–0', 'Singdam Monsaichon', 'KO', 3, '1:02', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(2, '2003/02/15', 'Win', '2–0', 'Chawal Sor Vorapin', 'UD', 6, '', 'Korakuen Hall', 'Tokyo', 'Japan', ''),
(1, '2002/12/15', 'Win', '1–0', 'Kyong-Soo Chung', 'KO', 1, '0:45', 'Prefectural Gymnasium', 'Osaka', 'Japan', '');
もうちょっと試合数の少ない選手を選べばよかった。作った後に少し後悔。。。
Linares選手の誕生日は1985/8/22です。
こちらの誕生日と試合日、そして今日時点(2021/1/2)を比べて、
①試合当日の年齢 = at the time
②今日時点の年齢 = current
の二つの列を追加するようなSQLを作成します。date_part(‘year’,age(date,date))を使います。
select no
,date
,date_part('year',age(date,'1985-08-22')) as "at the time"
,date_part('year',age(current_date,'1985-08-22')) as current
from jorgesrecord
結果は以下の通りです。最新5試合とデビューから5試合
no | date | at the time | current |
---|---|---|---|
52 | 2020-02-14 | 34 | 35 |
51 | 2019-09-07 | 34 | 35 |
50 | 2019-01-18 | 33 | 35 |
49 | 2018-09-29 | 33 | 35 |
48 | 2018-05-12 | 32 | 35 |
… | … | … | … |
5 | 2003-07-12 | 17 | 35 |
4 | 2003-04-19 | 17 | 35 |
3 | 2003-03-15 | 17 | 35 |
2 | 2003-02-15 | 17 | 35 |
1 | 2002-12-15 | 17 | 35 |
Linares選手のボクサー生活も後2年で20年ですね。最近はボクサーの選手寿命が伸びていて、40歳手前の世界チャンピオンも当たり前の時代になりました。
そして、世界タイトルを取ってからは年間で2から3試合ですが、デビュー当時から数年は年間5試合、多い年で6試合と、超ハイペースで試合してます。
と、年齢算出のSQLとは関係ありませんが、年齢の項目を持っておくと日付とは違った視点で持って物事を考えるきっかけになります。
なお、ageのみであれば、当然、以下の通り、年齢プラス月、日までの表示がされます。
select no
,date
,age(date,'1985-08-22') as "at the time"
,age(current_date,'1985-08-22') as current
from jorgesrecord
結果は以下の通り。最近5試合のみ表示
no | date | at the time | current |
---|---|---|---|
52 | 2020-02-14 | 34 years 5 mons 23 days | 35 years 4 mons 11 days |
51 | 2019-09-07 | 34 years 16 days | 35 years 4 mons 11 days |
50 | 2019-01-18 | 33 years 4 mons 27 days | 35 years 4 mons 11 days |
49 | 2018-09-29 | 33 years 1 mon 7 days | 35 years 4 mons 11 days |
48 | 2018-05-12 | 32 years 8 mons 21 days | 35 years 4 mons 11 days |
状況に応じて、色々な年齢の項目を用意しておくと、分析する方に対するちょっとした優しさを示せます。
今回本当はリナレス選手のこれまでの偉大な戦績についても触れていきたかったのですが、ここはまたの機会に。
では。