数据库面试题解析

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;

猜你喜欢

转载自blog.csdn.net/weixin_42038771/article/details/81123605