成绩单、业绩表SQL(一个纵表变横表 一个用开窗函数)

 原始表:

name            course              score
-----------------------------------------
张三            语文                80
张三            数学                75
张三            外语                60
李四            语文                90
李四            数学                85
李四            外语                70
王五            语文                95
王五            数学                80
王五            外语                75


结果表:

姓名        语文        数学        外语
-----------------------------------------
张三        80          75          60
李四        90          85          70
王五        95          80          75

=========================================

原始表:

city          volume
---------------------
北京          16000
东莞          5000
上海          200000
广州          8500
湛江          100000

结果表:

城市          排名
---------------------
北京          3
东莞          5
上海          1
广州          4
湛江          2

SQL code 1:
  
  
select name, sum ( case when course = "语文" then score else 0 end ) "语文", sum ( case when course = "数学" then score else 0 end ) "数学", sum ( case when course = "外语" then score else 0 end ) "外语" from table1 group by name; select city, row_number() over ( order by volume desc ) "排名" from table2;
  
  
SQL code 2:
  
  
SELECT name, SUM (DECODE(course, ' 语文 ' ,score, 0 )), SUM (DECODE(course, ' 数学 ' ,score, 0 )), SUM (DECODE(course, ' 外语 ' ,score, 0 )) FROM tb1 GROUP BY name; SELECT city "城市",rownum "排名" FROM tb2 ORDER BY volume DESC
  
  
SQL code 3:
 
 
select name,max(case when course='语文' then score end) "语文", max(case when course='数学' then score end) "数学", max(case when course='外语' then score end) "外语" from table_name group by name;
select city "城市",row_number() over(order by volume desc) as "排名" from ww0924 order by rowid;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenghuiping2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值