需求分析
需求1:求语文成绩大于英语成绩的学生的id
数据如下:
解题步骤
1、创建表
CREATE EXTERNAL TABLE score_table
(
`stu_id` STRING COMMENT '学生id',
`course` STRING COMMENT '学科',
`score` INT COMMENT '分数'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
2、将学科的种类化成字段
select
`stu_id`,
if(`course` = 'yuwen',score,0) yuwen,
if(`course` = 'shuxue',score,0) shuxue,
if(`course` = 'english',score,0) english
from score_table;
3、将多行转换成一行,并过滤语文成绩大于英语成绩的学生的id
select
`stu_id`,
max(`yuwen`) yuwen,
max(`shuxue`) shuxue,
max(`english`) english
from (
select `stu_id`,
if(`course` = 'yuwen', score, 0) yuwen,
if(`course` = 'shuxue', score, 0) shuxue,
if(`course` = 'english', score, 0) english
from score_table
) t1
group by `stu_id`
having `yuwen` > `english`;
扫描二维码关注公众号,回复:
15623105 查看本文章