演習課題「獲得所持金が50以上のユーザーだけ表示する」
右側のコードエリアのSQLは、サンプルデータベースのeventlogテーブルから、userIDおよび合計の獲得所持金と平均の獲得所持金を表示します。ここに、HAVINGを追加して、合計の獲得所持金が50以上のユーザーだけ表示してください。
コードを実行して、エラーが出なければ、演習課題クリアです!
※ eventlog表のuserID列を昇順で出力してください。
入力される値
データベースに格納されているデータは、本レッスンのチャプター01を参照してください。
期待する出力値
ユーザーID | 合計 | 平均 |
---|---|---|
2 | 213 | 3.8036 |
4 | 73 | 2.2121 |
6 | 53 | 1.3947 |
12 | 53 | 1.3947 |
16 | 53 | 1.3947 |
22 | 53 | 1.3947 |
26 | 53 | 1.3947 |
42 | 53 | 1.3947 |
46 | 53 | 1.3947 |
52 | 53 | 1.3947 |
56 | 53 | 1.3947 |
62 | 53 | 1.3947 |
66 | 53 | 1.3947 |
72 | 53 | 1.3947 |
76 | 53 | 1.3947 |
演習課題「レベルごとの平均経験値と平均ゴールドを求める」
右側のコードエリアのSQLは、サンプルデータベースのusersテーブルから、レベルと経験値・ゴールドを表示します。ここに、GROUP BYと集計関数を追加して、レベルごとの平均経験値と平均ゴールドを求めてください。平均値は、AVG関数で求めることができます。
コードを実行して、エラーが出なければ、演習課題クリアです!
※ level列を昇順に出力してください。
入力される値
データベースに格納されているデータは、本レッスンのチャプター01を参照してください。
期待する出力値
level | AVG(exp) | AVG(gold) |
---|---|---|
0 | 0.0000 | 0.0000 |
1 | 485.2500 | 447.5000 |
3 | 3025.5263 | 2935.5263 |
4 | 4040.0000 | 3950.0000 |
5 | 10340.0000 | 5530.0000 |
#05:データを集計しよう
ここでは、SQLを使って、獲得経験値の合計や平均を集計する方法を学習します。さらに、ユーザーのプレイ開始日とプレイ最終日を調べてみましょう。
- 1. FROM 対象テーブルからデータを取り出す
- 2. WHERE 条件に一致するレコードを絞り込み
- 3. GROUP BY グループ化
- 4. HAVING 集計結果から絞り込み
- 5. SELECT 指定したカラムだけを表示
逆引きSQL構文集 - 集計関数を使用する(基本)
http://www.sql-reference.com/summary/summary.html
逆引きSQL構文集 - 指定列の合計を求める
http://www.sql-reference.com/summary/sum.html
逆引きSQL構文集 - 指定列の平均を求める
http://www.sql-reference.com/summary/avg.html
逆引きSQL構文集 - 指定列の最大値や最小値を求める
http://www.sql-reference.com/summary/max_min.html
逆引きSQL構文集 - レコード数を取得する
http://www.sql-reference.com/summary/count.html
SQLの評価順 | The sky is the limit!
http://it.nog.raindrop.jp/?eid=350395
SELECT文の評価順序の話 - Qiita
http://qiita.com/suzukito/items/edcd00e680186f2930a8