28
第17週 データの集計 データベース 20111013日木曜日

データベース - SELECT文入門2

Embed Size (px)

Citation preview

Page 1: データベース - SELECT文入門2

第17週 データの集計データベース

2011年10月13日木曜日

Page 2: データベース - SELECT文入門2

タイムテーブル

• 5-5 データを使って集計する• P214 ~ P224•日付の扱い•評価課題

2011年10月13日木曜日

Page 3: データベース - SELECT文入門2

P214 データの計算• SELECT句のフィールドに計算式が書ける• SELECT 商品番号,商品名,単価,単価*0.8 FROM 商品

SELECT句select 商品番号,商品名,単価,単価*0.8

単価*0.8で8掛けの値を表示

FROM句 商品データベースを指定

2011年10月13日木曜日

Page 4: データベース - SELECT文入門2

P216 レコード数• count 関数を使ってレコード数を計算• SELECT count(*) FROM 名簿

SELECT句select count(*)

レコードの数を数える

FROM句 名簿データベースを指定

2011年10月13日木曜日

Page 5: データベース - SELECT文入門2

count(フィールド名)• count 関数の引数には*だけでなくフィールドが指定できる

• SELECT count(血液型) FROM 名簿

SELECT句select count(血液型)

血液型フィールドがNULLの以外のレコード数を数える

FROM句 名簿データベースを指定

2011年10月13日木曜日

Page 6: データベース - SELECT文入門2

P217 抽出したレコード数

• WHERE句を追加すればレコードを絞りこんでからレコード数を数えられる

• SELECT count(血液型) FROM 名簿 WHERE 性別 = ’女’

SELECT句 select count(血液型)血液型フィールドがNULLの以外のレコード数を数える

FROM句 名簿データベースを指定

WHERE句 条件文 「性別 = ’女’」 で性別フィールドの値が「女」のレコードを抽出

2011年10月13日木曜日

Page 7: データベース - SELECT文入門2

P217 重複を取り除いたレコード数

• count関数の引数に “DISTINCT”を追加• SELECT count(DISTINCT 血液型) FROM 名簿

SELECT句select count(distinct 血液型)

血液型フィールドがNULLの以外で、かつ、重複を取り除いたレコード数を数える

FROM句 名簿データベースを指定

2011年10月13日木曜日

Page 8: データベース - SELECT文入門2

P218 集計関数AVG(フィールド名) 平均

COUNT(フィールド名) レコード数

MAX(フィールド名) 最大値

MIN(フィールド名) 最小値

SUM(フィールド名) 合計

2011年10月13日木曜日

Page 9: データベース - SELECT文入門2

AVG(フィールド名)SELECT AVG(tanisu) FROM gakusei

SELECT句select avg(tanisu)

単位数フィールドの値の平均を求める

FROM句 gakusei データベースを指定

2011年10月13日木曜日

Page 10: データベース - SELECT文入門2

MAX(フィールド名)SELECT MAX(tanisu) FROM gakusei

SELECT句select max(tanisu)

単位数フィールドの最大値を求める

FROM句 gakusei データベースを指定

2011年10月13日木曜日

Page 11: データベース - SELECT文入門2

MIN(フィールド名)SELECT MIN(tanisu) FROM gakusei

SELECT句select min(tanisu)

単位数フィールドの最小値を求める

FROM句 gakusei データベースを指定

2011年10月13日木曜日

Page 12: データベース - SELECT文入門2

SELECT MAX(tanisu) - MIN(tanisu) FROM gakusei

もっとも単位数の最大値から最小値を引いた値を求める

2011年10月13日木曜日

Page 13: データベース - SELECT文入門2

SUM(フィールド名)SELECT SUM(tanisu) FROM gakusei

SELECT句select sum(tanisu)

単位数フィールドの値の合計を求める

FROM句 gakusei データベースを指定

2011年10月13日木曜日

Page 14: データベース - SELECT文入門2

P220 グループ毎の集計

•血液型ごと•性別ごと•出身地ごとといったフィールドの単位でレコードを

一旦まとめてから集計をおこなうことができる

2011年10月13日木曜日

Page 15: データベース - SELECT文入門2

そのためにはGROUP BY 句

を使う(P221 図1)

2011年10月13日木曜日

Page 16: データベース - SELECT文入門2

SELECT 血液型,count(*)  FROM 名簿 GROUP BY 血液型

SELECT句select 血液型,count(*)

•group byに指定したフィールド+集計関数•グループ化されたレコード単位でcount(*)

FROM句 名簿データベースを指定

GROUP BY句 血液型でレコードをグループ化

2011年10月13日木曜日

Page 17: データベース - SELECT文入門2

GROUP BY句には複数のフィールドを指定してグループ化もできる(P211 例2)

2011年10月13日木曜日

Page 18: データベース - SELECT文入門2

SELECT 血液型,性別,count(*)  FROM 名簿 GROUP BY 血液型,性別

SELECT句select 血液型,性別,count(*)

•group byに指定したフィールド+集計関数•グループ化されたレコード単位でcount(*)

FROM句 名簿データベースを指定

GROUP BY句 血液型と性別の組みでレコードをグループ化

2011年10月13日木曜日

Page 19: データベース - SELECT文入門2

SELECT 血液型,性別,count(*)  FROM 名簿 GROUP BY 血液型,性別

GROUP BY 句で指定したフィールドがSELECT句でも指定されることに

注意

2011年10月13日木曜日

Page 20: データベース - SELECT文入門2

P223 集計後の抽出•平均年令が40歳以上の県•注文個数が2個以上の商品•二人以上が就職する企業というように、先に集計をして、

その集計結果を元に抽出条件を指定できる

2011年10月13日木曜日

Page 21: データベース - SELECT文入門2

HAVING句を使う

•書式 P223,224• SELECT フィールド... FROM テーブル名 GROUP BY フィールド名... HAVING BY 抽出条件

2011年10月13日木曜日

Page 22: データベース - SELECT文入門2

WHEREとの違い

•WHEREではレコードを絞り込んでから集計していた

• HAVING は先に集計をして、その結果に条件文を適応してレコードを絞込む

• P223 図5-33

2011年10月13日木曜日

Page 23: データベース - SELECT文入門2

SELECT 商品番号,SUM(個数) FROM 注文サブ GROUP BY 商品番号 HAVING SUM(個数 ) >= 2;

SELECT句 select 血液型,性別,SUM(*)

FROM句 名簿データベースを指定

GROUP BY句 商品番号でレコードをグループ化

HAVING句 商品番号の組みで個数の合計を集計し、集計結果が2以上のレコードを抽出

2011年10月13日木曜日

Page 24: データベース - SELECT文入門2

日付データの扱い

日付データのフォーマットは‘YYYY-MM-DD’

2011年10月13日木曜日

Page 25: データベース - SELECT文入門2

select birthday from pinfo where birthday = ’1977-10-13’

2011年10月13日木曜日

Page 26: データベース - SELECT文入門2

日付関数

YEAR(フィールド名)フィールドから年の値を取り出す

MON(フィールド名)フィールドから月の値を取り出す

DAY(フィールド名)フィールドから

日にちの値を取り出す

2011年10月13日木曜日

Page 27: データベース - SELECT文入門2

日付から年だけを取り出す例: select year(birthday) from pinfo;

日付から月だけを取り出す例: select month(birthday) from pinfo;

日付から日にちだけを取り出す例: select day(birthday) from pinfo;

2011年10月13日木曜日

Page 28: データベース - SELECT文入門2

評価課題

2011年10月13日木曜日