SQLの練習問題です。
筆者の環境は以下となっていますが、別のデータベースやツールでもほとんど同じように動作すると思います。
- MariaDB 5.5.48
- MySQL Workbench 6.3
よくわからないという方は、XAMPをインストールすると簡単に筆者と同じ環境を構築できます。以下のページで紹介されています。
【PHP入門】環境構築
問題として使用するデータは以下からダウンロード可能です。phpMyAdminからデータベース(worldcup2014)を作成しインポートしておいてください。
worldcup2014.zip
※データの誤りがありましたので、既にインポートされた方も改めて再インポートをお願いします。※ 2016/07/15
問題:以下の条件でSQLを作成し、抽出された結果をもとにどのような傾向があるか考えてみてください。
・5歳単位、ポジションでグループ化
・選手数、平均身長、平均体重を表示
・順序は年齢、ポジション
正解:
SELECT FLOOR(TIMESTAMPDIFF(YEAR, birth, '2014-06-13') / 5) * 5 AS age, position, COUNT(id) AS player_count, AVG(height), AVG(weight) FROM players GROUP BY age, position ORDER BY age, position
SQL自体はそれほど難しくないかと思います。
今回はその結果をもとに年齢とポジション、身体的な特徴を分析してみるという問題でした。
いろいろなことがわかりますが、例えば以下のようなものになると思います。
- GKは他のポジションに比べて年齢的なハンデが低い(35歳代ではもっとも人数が多い)
- GKは若年層が極端に少なく、天性の素質よりも経験値が大きく影響する可能性が高い
- DFは年齢が上がるにつれ身長が低くなる(つまり身体的な優位性以外の経験などが重視される)が、35歳以上では身体的な優位性も必要となる
- MF、FWは一部例外があるものの年齢が上がるにつれて身長が高くなるため、若年世代では特に身体的な優位性よりも天性の素質やスピード面での優位性などが重要視される可能性が高い
- FWは20~34まで人数がそれほど大きく変わらない。これは様々なタイプの選手(若くて走れる選手、背が高く競り勝てる選手など)が求められる可能性が高い
連載目次リンク
関連する連載リンク
WEBアプリケーション関連 人気連載リンク
データベースの基礎が学べるSQL基礎講座
SQL基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載