忍者ブログ

からすまる日誌 mySQL

授業ノートのまとめ

序章(8) count,avg,sum

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

序章(8) count,avg,sum

集合関数
一定のテーブルをターゲットに合計など出す
 
count(*) :件数を求める
avg(列名) :アベレージ/平均
sum(列名) :合計値を求める
 
がよく使われる
関数なので引数がいる
 

SELECT count(*) FROM foods;
 
→実行結果
count(*)
20
 
どこからのFROMは必要ですよ
 

検索結果が何ページになりそうかは結構重要
これをphpでページ数を引き取ったりするが、
名前のない結果は受け取れない
→AS句を使ってカラムの名前をつくっておかないといけない 
 
SELECT count(*)FROM foods AS x;
こうだろか ちがうな?
SELECT count(*)AS x FROM foods ;
AS句を入れる場所を間違えると出ないようだ
 

SELECT sum(price) AS p FROM foods;
プライスの合計値 
 

SELECT avg(price) AS av FROM foods;
プライスの平均値
 

カテゴリごとの平均値
グループ化をする
集合関数を使うときにグループ化というのを使う
 
グループバイというのを使うとグループごとに集計ができるようになるらしい
 

SELECT c_id,avg(price) AS av FROM foods
 GROUP BY c_id
 
おなじc_idを持つ者同士をグループとしてまとめるらしい
冒頭のc_idはなんだよ
何を基準にグループするかがおわりのc_id
 
→冒頭のは
・なくてもいい
・なにが出力されたかわからないからつけた
・本来はテーブルをまたいで「麺類」とかでるのが本来だ
 
ですって

SELECT foods.c_id,cat, avg(price) 
 AS av
 FROM foods,cats 
 WHERE foods.c_id = cats.c_id 
 GROUP BY c_id 
 
SELECT foods.c_id,cat, avg(price) //foodsのc_idとcatの列とプライスの平均値も出力してくれ
 AS av //phpさんが読むときに必要。平均値の名前はavにしてくれ
 FROM foods,cats //2つのテーブルにまたがるので
 WHERE foods.c_id = cats.c_id //外部キーと主キー
 GROUP BY c_id //グループ化
 
つまりこういうことです
 

ブログとかツイッターとかそういうのはこういうので作るらしい
 

2月ごろから自由課題を作り出すので
どういうものを作りたいのかざっくり考えておくこと
サービスを簡易なものでいいので3つぐらいつくってみる
セキュリティリスクをどう回避するかが一番難しいらしい(大事)
  
PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
karasumaru
性別:
非公開

P R