集合関数
一定のテーブルをターゲットに合計など出す
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つぐらいつくってみる
セキュリティリスクをどう回避するかが一番難しいらしい(大事)