0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQL⑧ データの集計処理、サブクエリ

Posted at

users_with_team テーブル

id name score team
1 AAA 11 team-A
2 BBB 22 team-B
3 CCC 33 team-C
4 DDD 44 team-B

####データの個数を調べる count()
select count() from users_with_team;
➡️4
####特定のカラムのデータの個数を調べる count(カラム名)
select count(score) from users_with_team;
➡️4
####sum で合計、 min で最小値、 max で最大値、 avg で平均
select sum(カラム名) from users_with_team; ➡️110
select min(カラム名) from users_with_team; ➡️11
select max(カラム名) from users_with_team; ➡️44
select avg(カラム名) from users_with_team; ➡️27.5

####重複したレコードを取り除いて取得する distinct カラム名
select distinct team from users_with_team;

team
team-A
team-B
team-C

####重複したレコードの数を数える
select count(distinct team) from users_with_team;
➡️3

#グループ化する

####グループごとの合計をだす group by グループ化の基準にするカラム名
select sum(score), team from users_with_team group by team;

####逆順にする desc
select sum(score), team from users_with_team group by team desc;

####グループ化の後に条件をつける group by グループ化の基準にするカラム名 having 条件
havingでは、グループ化したカラム、集計した値以外使えない
select sum(score), team from users_with_team group by team having sum(score) > 10.0;

####特定の条件でグループ化する where 条件 group by グループ化の基準にするカラム名
where で条件付きで抽出した後にグループ化する
select sum(score), team from users_with_team where id > 3 group by team;

#一時的に使用するテーブル サブクエリ

元のテーブル

id name score
1 AAA 11
2 BBB 22
3 CCC 33
4 DDD 44

ここから集計の為のテーブルを一時的に作成する

select sum(t.score), t.team from(
  select       ⬅️ここから
    id,
    name,
    score,
    case
      when score > 8.0 then 'Team-A'
      when score > 6.0 then 'Team-B'
      else 'Team-C'
    end as team
  from users) as t   ⬅️ここまでがサブクエリ
group by t.team;

#####サブクエリを使用しないと users_with_teamテーブルを作成してから集計する
create table users_with_team
select id, name, score,
    case
      when score > 8.0 then 'Team-A'
      when score > 6.0 then 'Team-B'
      else 'Team-C'
    end as team
from users 

select sum(score), team from users_with_team group by team;

抽出条件を保存する view

viewはテーブルの様に扱われる
####viewを作成する create view ビュー名 as 抽出条件
create view top3 as select * from users order by score desc limit 3;

####保存された抽出条件を確認する show create view ビュー名;
show create view top3;

####viewを削除する
drop view top3;

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?