2

name2列のテーブル名の学生がいますstatus

CREATE TABLE student
(
  name varchar(30) , status varchar(30) 
);

INSERT INTO student 
(name, status) 
VALUES 
('a','pass'),
('a','fail'),
('a','pass'),
('b','fail'),
('b','fail'),
('b','pass');

クエリは3列を表示する必要があります

name pass fail
a    2      1
b    1      2

つまり、noのカウントに対応する学生の名前。合格した科目の数と不合格だった科目の数を結果に表示する必要があります。

4

2 に答える 2

6
select name,
sum(case when status = 'pass' then 1 else 0 end) as sumPass,
sum(case when status = 'fail' then 1 else 0 end) as sumFail
From student
group by name

sqlFiddle

于 2013-02-01T13:33:37.337 に答える
2

これを MYSQL で簡単に使用できます: (MYSQL を使用していると仮定すると、移植性はありません Oracle, SQL Server)

MYSQL デモ

select name,
sum(status = 'pass') as Pass,
sum(status = 'fail') as Fail
From student
group by name
;

| NAME | PASS | FAIL |
----------------------------
|    a |       2 |       1 |
|    b |       1 |       2 |
于 2013-02-01T13:45:18.463 に答える