SQL语句 case... when...then...练习题及答案

本文通过两个具体案例,展示了如何使用SQL进行数据处理和分析。第一个案例中,我们对球队比赛结果进行了汇总,计算了各队的胜败场次;第二个案例则处理了票据金额,将正数视为收入,负数视为支出,清晰地展示了财务状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习题1

原表格:
加粗样式
要求处理后呈现如下:
在这里插入图片描述

结果如下

//创建表格
create table team (name char(8),result nchar(1),id serial);

insert into TEAM (name, result) values
(N'火箭',1),
(N'奇才',1),
(N'湖人',1),
(N'火箭',0),
(N'火箭',0),
(N'奇才',1)
;

=> select * from team;
  NAME  | RESULT | COUNTRY | ID
--------+--------+---------+----
 奇才   | 胜     | CN      |  4
 奇才   | 胜     | CN      |  6
 湖人   | 胜     | CN      |  5
 火箭   | 胜     | CN      |  3
 火箭   | 败     | CN      |  1
 火箭   | 败     | CN      |  2
(6 rows)

=> select name,
sum(case when result = N'胜' then 1 else 0 end) as ’胜‘,
sum(case when result = N'败' then 1 else 0 end) as ’败‘
from team group by name;
-> -> ->   
NAME  | ’胜‘ | ’败‘
--------+------+------
 火箭   |    1 |    2
 奇才   |    2 |    0
 湖人   |    1 |    0
(3 rows)


练习题2:

原表格:
在这里插入图片描述
处理后呈现成以下格式:
在这里插入图片描述

结果:

操作方法如下:

//创建表
create table test1 (Ticket varchar(4),Amount int);

//写入参数
=> insert into test1 (Ticket, Amount) values
('tk1',10),
('tk2',20),
('tk3',-30),
('tk4',0),
('tk5',-10);
-> INSERT 0 5


//查表
=> select * from test1;
 TICKET | AMOUNT
--------+--------
 tk1    |     10
 tk2    |     20
 tk3    |    -30
 tk4    |      0
 tk5    |    -10
(5 rows)

//结果输出
=> select ticket,
(
case
when AMOUNT >= 0 then AMOUNT
else 0
end
) as income,
(
case
when AMOUNT >=0 then 0
else AMOUNT
end
) as expense
from test1;
->  TICKET | INCOME | EXPENSE
--------+--------+---------
 tk1    |     10 |       0
 tk2    |     20 |       0
 tk3    |      0 |     -30
 tk4    |      0 |       0
 tk5    |      0 |     -10
(5 rows)```


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值