前のページ < | > 次のページ

(8) SQLの計算、集計、グループ化

  • 下記にサンプルデータを記す。これを用いて集計等を行った。
+ ←クリックで開く
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);

  • フィールドの値同士を計算する
select name, sex, japanese, math, english, japanese + math + english 
from test 
  • 結果

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


関数を使う

  • concat(); 結合関数
select concat(id,'番 ',name,'さん') from test;

  • 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());


  • 各種集計関数
関数と表記 内容
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
  • 結果


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






前のページ < | > 次のページ
◆ ◆ ◆

最終更新:2012年01月21日 18:19
添付ファイル