sql语句大练习

本文介绍了SQL中的两个重要操作:1. 计算两列之间的差值最小值,通过`selectMin(ABS(x.x-y.x))fromtest1xjointest1ywherex.x!=y.x`实现;2. 利用`CASE`语句进行行转列,如在成绩统计中按科目聚合成绩。此外,还展示了如何使用`UNION`将数据从列转行为行。这些技巧对于数据处理和分析非常实用。
摘要由CSDN通过智能技术生成

1.算列里面两者差值最小

select Min(ABS(x.x-y.x)) from test1 x join test1 y where x.x != y.x

 

 2.行转列(case语句的用法)

Case具有两种格式。简单Case函数和Case搜索函数。

–简单Case函数
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
eg:
CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END
搜索Case函数
CASE WHEN [expr] THEN [result1]…ELSE [default] END
eg:
CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘2’ THEN ‘女’ ELSE ‘其他’ END

select 学号, sum(case 科目 when "数学" then 分数 end) as "数学", sum(case 科目 when "语文" then 分数 end) as "语文", sum(case 科目 when "英语" then 分数 end) as "英语" from test2 group by 学号

3.列转行

select 学号, 数学 as 分数, "数学" as 科目 from test3 union
select 学号, 语文 as 分数, "语文" as 科目 from test3 order by 学号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值