中級 SQL Server
Ginger Grant
Instructor
第1章:データの要約
第2章:日付と数学関数
第3章:T-SQLによるデータ処理
第4章:ウィンドウ関数
各列の要約値を確認することはデータ分析の一般的な第一歩です
データがデータベースにある場合、SQLを使った集計が最も効率的です
SELECT Country, Year, InternetUse, GDP,
ExportGoodsPercent, CellPhonesper100
FROM EconomicIndicators
+-----------+-----+------------+------------+------------------+-----------------+
|Country |Year |InternetUse | GDP |ExportGoodsPercent|CellPhonesper100 |
+-----------+-----+------------+------------+------------------+-----------------+
|Swaziland |2011 |20.43165813 |7335004354 |56.30476059 |63.7015615 |
|Sweden |2011 |90.88204559 |394271163688|49.93022195 |118.5711258 |
|Switzerland|2011 |82.98773087 |395111518596|51.20242546 |130.0623629 |
...
+-----------+-----+------------+------------+------------------+-----------------+
MIN():列の最小値MAX():列の最大値AVG():列の平均値このT-SQLクエリはInternetUse列の集計値を返します
SELECT AVG(InternetUse) AS MeanInternetUse, MIN(InternetUse) AS MINInternet, MAX(InternetUse) AS MAXInternet FROM EconomicIndicators+-------------------+------------+-------------+ |MeanInternetUse |MINInternet | MAXInternet| |-------------------+------------+-------------| | 18.9854496196171| 0 | 375.5970064| +-------------------+------------+-------------+
このT-SQLクエリはWHERE句で集計値をフィルタリングします テキスト値の記述に注意
SELECT AVG(InternetUse) AS MeanInternetUse,
MIN(InternetUse) AS MINInternet,
MAX(InternetUse) AS MAXInternet
FROM EconomicIndicators
WHERE Country = 'Solomon Islands'
+-------------------+------------+-------------+
|MeanInternetUse |MINInternet | MAXInternet|
|-------------------+------------+-------------|
| 1.79621| 0 | 6.00|
+-------------------+------------+-------------+
SELECT Country, AVG(InternetUse) AS MeanInternetUse,
MIN(InternetUse) AS MINInternet,
MAX(InternetUse) AS MAXInternet
FROM EconomicIndicators
GROUP BY Country
+--------------------+------------------+------------+-------------+
| Country |MeanInternetUse |MINInternet | MAXInternet|
|--------------------+------------------+------------+-------------|
|Solomon Islands | 1.79621| 0| 6.00|
|Hong Kong | 245.1067| 0| 375.00|
|Liechtenstein | 63.8821| 36.5152| 85.00|
...
+--------------------+------------------+------------+-------------+
GROUP BYにWHEREは使用できません(エラーになります)
-- This throws an error
...
GROUP BY
WHERE Max(InternetUse) > 100
代わりにHAVINGを使用します
-- This is how you filter with a GROUP BY
...
GROUP BY
HAVING Max(InternetUse) > 100
SELECT Country, AVG(InternetUse) AS MeanInternetUse,
MIN(GDP) AS SmallestGDP,
MAX(InternetUse) AS MAXInternetUse
FROM EconomicIndicators
GROUP BY Country
HAVING MAX(InternetUse) > 100
+--------------+-------------------+-------------+---------------+
|Country |MeanInternetUse |SmallestGDP | MAXInternetUse|
|--------------+-------------------+-------------+---------------|
|Macedonia | 71.3060150792857| -0.465059948| 110.5679538|
|Hong Kong | 245.106718614286| 0| 375.5970064|
|Congo | 60.8972476010714| -9.492757847| 104.6455529|
...
+--------------+-------------------+-------------+---------------+
中級 SQL Server