sql语句的执行顺序

sql语句的执行顺序

看了老师的课程 还是不太明白下面的sql语句是怎么执行的

SELECT 
    CASE pref_name 
 WHEN '渝北区' THEN '重庆市'
 WHEN '万州区' THEN '重庆市'
 WHEN '江北区' THEN '重庆市'
 WHEN '渝中区' THEN '重庆市'
 WHEN '朝阳区' THEN '北京市'
 WHEN '海淀区' THEN '北京市'
 WHEN '丰台区' THEN '北京市'
        ELSE '其他' 
    END AS district, SUM(population) AS sum_population
 FROM PopTbl 
 GROUP BY CASE pref_name 
 WHEN '渝北区' THEN '重庆市'
 WHEN '万州区' THEN '重庆市'
 WHEN '江北区' THEN '重庆市'
 WHEN '渝中区' THEN '重庆市'
 WHEN '朝阳区' THEN '北京市'
 WHEN '海淀区' THEN '北京市'
 WHEN '丰台区' THEN '北京市'
        ELSE '其他' END;

你好 老师请问就是这个sql语句执行的顺序是怎么样的呢?我不太明白 case…when 计算表达式执行的时机。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小猿 2023-04-28 10:17:26

同学,你好!先中兴from后的表从表中找数据,再执行group by 中的case when 。 case when 将pref_name 的区显示成所属的市,然后按市进行分组。再执行 select 查询语句的case when将不同的区显示then 后的所属市,最后对population字段进行求和

祝学习愉快~


  • 提问者 AmoXiang #1
    这两个case when 都是单独执行的吗
    2023-04-28 10:19:09
  • 好帮手慕小猿 回复 提问者 AmoXiang #2

    同学,你好!是的,执行两次case when

    祝学习愉快~

    2023-04-28 11:09:47
  • 提问者 AmoXiang 回复 好帮手慕小猿 #3

    在mysql中就是将group by 后面的case when 改为district别名一样的可以使用,此时又是怎么执行的呢。提前准备好了嘛

    2023-04-28 11:15:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师