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