「php04」の編集履歴(バックアップ)一覧に戻る

php04 - (2012/01/21 (土) 18:17:12) のソース

[[前のページ>php03]] < | > [[次のページ>php05]]

*(8) SQLの計算、集計、グループ化
・下記にサンプルデータを記す。これを用いて集計等を行った。
#region(close,←クリックで開く)
create table test2 (
id int(11) not null auto_increment,
name varchar(50) not null,
sex varchar(5) not null,
japanese int,
math int,
english int,
primary key (id)
);
insert into test (id, name, sex, japanese, math, english) values (1, '山田太郎', '男', 62, 73, 59);
insert into test (id, name, sex, japanese, math, english) values (2, '田中哲夫', '男', 48, 55, 46);
insert into test (id, name, sex, japanese, math, english) values (3, '鈴木康子', '女', 83, 62, 74);
insert into test (id, name, sex, japanese, math, english) values (4, '高橋康弘', '男', 69, 84, 77);
insert into test (id, name, sex, japanese, math, english) values (5, '斉藤若菜', '女', 72, 59, 83);
insert into test (id, name, sex, japanese, math, english) values (6, '山本隆', '男', 43, 51, 60);
insert into test (id, name, sex, japanese, math, english) values (7, '川上哲子', '女', 65, 54, 59);
insert into test (id, name, sex, japanese, math, english) values (8, '小林加奈', '女', 71, 59, 75);
insert into test (id, name, sex, japanese, math, english) values (9, '杉山和彦', '男', 82, 77, 85);
insert into test (id, name, sex, japanese, math, english) values (10, '近藤雅美', '女', 59, 61, 68);
#endregion

・フィールドの値同士を計算する
> select name, sex, japanese, math, english, japanese + math + english 
> from test 
・結果
#image(keisan.gif,center)

・計算結果にネーミングする。
・・asを使って、先ほどの長いフィールド名が「sum」に表記される。
> select name, sex, japanese, math, english, japanese + math + english 
> as sum from test


**関数を使う
・&bold(){concat(); 結合関数}
> select concat(id,'番 ',name,'さん') from test;

・&bold(){count(); カウント関数} レコードの件数を数える
> select count(id) from test where sex = '男'
・結果
 5

・右から2文字を取り出す:right関数
> select right(bang,2) from tb1;

・左から2文字を取り出す:left関数
> select left(bang,2) from tb1;

・~文字目から△文字取り出す:substring関数
> select substring(bang,~,△) from tb1;

・繰り返して表示:repeat関数
> select repeat('-',tosi) from tb1;

・逆さから表示:reverse関数
> select reverse(nama) from tb1;

・今の時刻を入れる:now関数
> create table ima (a INT AUTO_INCREMENT PRIMARY KEY ,b DATETIME);
> insert into ima (b) values(NOW());


・&bold(){各種集計関数}
|BGCOLOR(#e4ccff):&bold(){関数と表記}|BGCOLOR(#e4ccff):&bold(){内容}|
|sum(フィールド名)|合計を求める|
|avg(フィールド名)|平均を求める|
|max(フィールド名)|最高値を求める|
|min(フィールド名)|最低値を求める|
・japaneseフィールドの平均点(javg)、最低点(jmin)、最高点(jmax)
> select avg(japanese) as javg, min(japanese) as jmin, 
> max(japanese) as jmax from test

・レコードをグループ分けして集計する
> select フィールド名または関数の式 from テーブル名 where 条件式 
> group by グループ化に使うフィールド名 order by 並べ替えに使うフィールド名
・レコードをグループ分けして平均点、最低点、最高点を求める
> select sex, avg(japanese) as javg, min(japanese) as jmin, 
> max(japanese) as jmax from test group by sex
・結果
#image(keisan2.gif,center)


※  XAMPP 1.7.7 [PHP: 5.3.8] での設定項目です。





----
#center(){[[前のページ>php03]] < | > [[次のページ>php05]]}
#center(){◆ ◆ ◆}
----