データベース - select文入門2
TRANSCRIPT
![Page 1: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/1.jpg)
第17週 データの集計データベース
2011年10月13日木曜日
![Page 2: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/2.jpg)
タイムテーブル
• 5-5 データを使って集計する• P214 ~ P224•日付の扱い•評価課題
2011年10月13日木曜日
![Page 3: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/3.jpg)
P214 データの計算• SELECT句のフィールドに計算式が書ける• SELECT 商品番号,商品名,単価,単価*0.8 FROM 商品
SELECT句select 商品番号,商品名,単価,単価*0.8
単価*0.8で8掛けの値を表示
FROM句 商品データベースを指定
2011年10月13日木曜日
![Page 4: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/4.jpg)
P216 レコード数• count 関数を使ってレコード数を計算• SELECT count(*) FROM 名簿
SELECT句select count(*)
レコードの数を数える
FROM句 名簿データベースを指定
2011年10月13日木曜日
![Page 5: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/5.jpg)
count(フィールド名)• count 関数の引数には*だけでなくフィールドが指定できる
• SELECT count(血液型) FROM 名簿
SELECT句select count(血液型)
血液型フィールドがNULLの以外のレコード数を数える
FROM句 名簿データベースを指定
2011年10月13日木曜日
![Page 6: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/6.jpg)
P217 抽出したレコード数
• WHERE句を追加すればレコードを絞りこんでからレコード数を数えられる
• SELECT count(血液型) FROM 名簿 WHERE 性別 = ’女’
SELECT句 select count(血液型)血液型フィールドがNULLの以外のレコード数を数える
FROM句 名簿データベースを指定
WHERE句 条件文 「性別 = ’女’」 で性別フィールドの値が「女」のレコードを抽出
2011年10月13日木曜日
![Page 7: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/7.jpg)
P217 重複を取り除いたレコード数
• count関数の引数に “DISTINCT”を追加• SELECT count(DISTINCT 血液型) FROM 名簿
SELECT句select count(distinct 血液型)
血液型フィールドがNULLの以外で、かつ、重複を取り除いたレコード数を数える
FROM句 名簿データベースを指定
2011年10月13日木曜日
![Page 8: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/8.jpg)
P218 集計関数AVG(フィールド名) 平均
COUNT(フィールド名) レコード数
MAX(フィールド名) 最大値
MIN(フィールド名) 最小値
SUM(フィールド名) 合計
2011年10月13日木曜日
![Page 9: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/9.jpg)
AVG(フィールド名)SELECT AVG(tanisu) FROM gakusei
SELECT句select avg(tanisu)
単位数フィールドの値の平均を求める
FROM句 gakusei データベースを指定
2011年10月13日木曜日
![Page 10: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/10.jpg)
MAX(フィールド名)SELECT MAX(tanisu) FROM gakusei
SELECT句select max(tanisu)
単位数フィールドの最大値を求める
FROM句 gakusei データベースを指定
2011年10月13日木曜日
![Page 11: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/11.jpg)
MIN(フィールド名)SELECT MIN(tanisu) FROM gakusei
SELECT句select min(tanisu)
単位数フィールドの最小値を求める
FROM句 gakusei データベースを指定
2011年10月13日木曜日
![Page 12: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/12.jpg)
SELECT MAX(tanisu) - MIN(tanisu) FROM gakusei
もっとも単位数の最大値から最小値を引いた値を求める
2011年10月13日木曜日
![Page 13: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/13.jpg)
SUM(フィールド名)SELECT SUM(tanisu) FROM gakusei
SELECT句select sum(tanisu)
単位数フィールドの値の合計を求める
FROM句 gakusei データベースを指定
2011年10月13日木曜日
![Page 14: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/14.jpg)
P220 グループ毎の集計
•血液型ごと•性別ごと•出身地ごとといったフィールドの単位でレコードを
一旦まとめてから集計をおこなうことができる
2011年10月13日木曜日
![Page 15: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/15.jpg)
そのためにはGROUP BY 句
を使う(P221 図1)
2011年10月13日木曜日
![Page 16: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/16.jpg)
SELECT 血液型,count(*) FROM 名簿 GROUP BY 血液型
SELECT句select 血液型,count(*)
•group byに指定したフィールド+集計関数•グループ化されたレコード単位でcount(*)
FROM句 名簿データベースを指定
GROUP BY句 血液型でレコードをグループ化
2011年10月13日木曜日
![Page 17: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/17.jpg)
GROUP BY句には複数のフィールドを指定してグループ化もできる(P211 例2)
2011年10月13日木曜日
![Page 18: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/18.jpg)
SELECT 血液型,性別,count(*) FROM 名簿 GROUP BY 血液型,性別
SELECT句select 血液型,性別,count(*)
•group byに指定したフィールド+集計関数•グループ化されたレコード単位でcount(*)
FROM句 名簿データベースを指定
GROUP BY句 血液型と性別の組みでレコードをグループ化
2011年10月13日木曜日
![Page 19: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/19.jpg)
SELECT 血液型,性別,count(*) FROM 名簿 GROUP BY 血液型,性別
GROUP BY 句で指定したフィールドがSELECT句でも指定されることに
注意
2011年10月13日木曜日
![Page 20: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/20.jpg)
P223 集計後の抽出•平均年令が40歳以上の県•注文個数が2個以上の商品•二人以上が就職する企業というように、先に集計をして、
その集計結果を元に抽出条件を指定できる
2011年10月13日木曜日
![Page 21: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/21.jpg)
HAVING句を使う
•書式 P223,224• SELECT フィールド... FROM テーブル名 GROUP BY フィールド名... HAVING BY 抽出条件
2011年10月13日木曜日
![Page 22: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/22.jpg)
WHEREとの違い
•WHEREではレコードを絞り込んでから集計していた
• HAVING は先に集計をして、その結果に条件文を適応してレコードを絞込む
• P223 図5-33
2011年10月13日木曜日
![Page 23: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/23.jpg)
SELECT 商品番号,SUM(個数) FROM 注文サブ GROUP BY 商品番号 HAVING SUM(個数 ) >= 2;
SELECT句 select 血液型,性別,SUM(*)
FROM句 名簿データベースを指定
GROUP BY句 商品番号でレコードをグループ化
HAVING句 商品番号の組みで個数の合計を集計し、集計結果が2以上のレコードを抽出
2011年10月13日木曜日
![Page 24: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/24.jpg)
日付データの扱い
日付データのフォーマットは‘YYYY-MM-DD’
2011年10月13日木曜日
![Page 25: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/25.jpg)
select birthday from pinfo where birthday = ’1977-10-13’
2011年10月13日木曜日
![Page 26: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/26.jpg)
日付関数
YEAR(フィールド名)フィールドから年の値を取り出す
MON(フィールド名)フィールドから月の値を取り出す
DAY(フィールド名)フィールドから
日にちの値を取り出す
2011年10月13日木曜日
![Page 27: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/27.jpg)
日付から年だけを取り出す例: select year(birthday) from pinfo;
日付から月だけを取り出す例: select month(birthday) from pinfo;
日付から日にちだけを取り出す例: select day(birthday) from pinfo;
2011年10月13日木曜日
![Page 28: データベース - SELECT文入門2](https://reader033.vdocuments.net/reader033/viewer/2022052223/558bb07bd8b42a71408b46fb/html5/thumbnails/28.jpg)
評価課題
2011年10月13日木曜日