1.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]
(100-85为优,85-70为好,70-60为良,60-0为不及格)
select 课程编号,课程名称,成绩,
(case when 成绩<=100 and >=85 then '优'
when 成绩<85 and >=70 then '好'
when 成绩<70 and >=60 then 'l良'
when 成绩<60 and >=0 then '不及格'
end ) as '评价' from 成绩表;
2.行转列
#创建表
CREATE TABLE wyc_test(
id INT(32)NOT NULL auto_increment,
NAME VARCHAR(80)DEFAULT NULL,
date date DEFAULT NULL,
scount INT(32),
PRIMARY KEY(id)
);
#插入数据
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (1,'小说','2013-09-01',10000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (2,'微信','2013-09-01',20000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (3,'小说','2013-09-02',30000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (4,'微信','2013-09-02',35000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (5,'小说','2013-09-03',31000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (6,'微信','2013-09-03',36000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (7,'小说','2013-09-04',35000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (8,'微信','2013-09-04',38000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`
)VALUES (9,'小说','2013-09-01',80000);
INSERT INTO `wyc_test`( `id`, `name`, `date`, `scount`)
VALUES (10,'微信','2013-09-01',70000);
#行转列--注:凡和聚合函数同时出现的列名,则一定要写在group by 之后
SELECT a.date,
sum( CASE a. NAME WHEN '小说' THEN a.scount ELSE 0 END )'sum_小说',
max( CASE a. NAME WHEN '小说' THEN a.scount ELSE 0 END )'max_小说',
sum( CASE a. NAME WHEN '微信' THEN a.scount ELSE 0 END )'sum_微信',
max( CASE a. NAME WHEN '小说' THEN a.scount ELSE 0 END )'max_微信'
FROM wyc_test a
GROUP BY date;