高级的 SQL 查询技巧

news/2025/9/24 23:37:15/文章来源:https://www.cnblogs.com/KL2016/p/19110316

1.常见表表达式(CTEs)

with toronto_ppl as (
    SELECT DISTINCT  name
    FROM population
    WHERE country = "Canada"
      AND city = "Toronto"
)
   , avg_female_salary as (
        SELECTAVG(salary) as avgSalary
        FROM salaries
        WHERE gender = "Female"
    )
SELECT  name
     , salary
FROM People
WHERE name  in (SELECT   DISTINCT   FROM toronto_ppl)
AND salary >= (SELECT avgSalary FROM avg_female_salary)

 

2.递归CTEs.

递归CTE是引用自己的CTE,就像Python中的递归函数一样。递归CTE尤其有用,它涉及查询组织结构图,文件系统,网页之间的链接图等的分层数据,尤其有用。

递归CTE有3个部分:

  • 锚构件:返回CTE的基本结果的初始查询
  • 递归成员:引用CTE的递归查询。这是所有与锚构件的联盟
  • 停止递归构件的终止条件

with org_structure as (
    SELECT id
         , manager_id
    FROM staff_members
    WHERE manager_id IS NULL
    UNION ALL
    SELECT sm.id
         , sm.manager_id
    FROM staff_members sm
             INNER JOIN org_structure os
                        ON os.id = sm.manager_id

 

3.临时函数

  • 它允许您将代码的块分解为较小的代码块
  • 它适用于写入清洁代码
  • 它可以防止重复,并允许您重用类似于使用Python中的函数的代码。

SELECT name
     , CASEWHEN tenure < 1THEN"analyst"
            WHEN tenure BETWEEN1and3THEN"associate"
            WHEN tenure BETWEEN3and5THEN"senior"
            WHEN tenure > 5THEN"vp"
            ELSE"n/a"
        ENDAS seniority
FROM employees

=====改写为使用临时函数=====》

 

CREATE TEMPORARYFUNCTION get_seniority(tenure INT64) AS (
   CASEWHEN tenure < 1THEN"analyst"
        WHEN tenure BETWEEN1and3THEN"associate"
        WHEN tenure BETWEEN3and5THEN"senior"
        WHEN tenure > 5THEN"vp"
        ELSE"n/a"
   END
);
SELECTname
     , get_seniority(tenure) as seniority
FROM employees

 

Rank vs Dense Rank vs Row Number

SELECT Name
     , GPA
     , ROW_NUMBER() OVER (ORDER BY GPA desc)
 , RANK() OVER (ORDER BY GPA desc)
 , DENSE_RANK() OVER (ORDER BY GPA desc)
FROM student_grades

 

cf75feb379f69ed58aea11a8c83773ab

 

ROW_NUMBER()返回每行开始的唯一编号。当存在关系时(例如,BOB vs Carrie),ROW_NUMBER()如果未定义第二条标准,则任意分配数字。

Rank()返回从1开始的每行的唯一编号,除了有关系时,等级()将分配相同的数字。同样,差距将遵循重复的等级。

dense_rank()类似于等级(),除了重复等级后没有间隙。请注意,使用dense_rank(),Daniel排名第3,而不是第4位()。

 

计算Delta值

SELECT month
       , sales
       , sales - LAG(sales, 1) OVER (ORDER BY month)
FROM monthly_sales
# Comparing each month's sales to the same month last year
SELECT month
        , sales
        , sales - LAG(sales, 12) OVER (ORDER BY month)
FROM monthly_sales

 

计算运行总数

SELECT Month
        , Revenue
        , SUM(Revenue) OVER (ORDER BY Month) AS Cumulative
FROM monthly_revenue

059605b7c5f1e50d51f16e59ad6af975

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916400.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站pc开发上海商旅平台app

婚恋相亲红娘牵线系统是一个综合性的婚恋交友平台&#xff0c;它集成了多种功能以帮助用户找到心仪的伴侣。以下是其主要功能的详细介绍&#xff1a; 用户信息深度分析和匹配&#xff1a;该系统利用大数据和人工智能技术&#xff0c;对用户的基本信息&#xff08;如年龄、身高…

在台风天找回了生活的本貌

早上7点30分,风拍打窗户的声音很大,加上我的生物钟也在7点30分,我醒了。我望向窗外,天地灰蒙,树木狂舞,这才想起今天广东刮台风,各地都停工停课了。我看到家人和对面的邻居都安静地待在家中,平日里匆忙的脚步被…

网站建设事宜wordpress可以企业网站

随着市场竞争的日益激烈&#xff0c;企业对产品开发的要求也越来越高。如何在快速变化的市场环境中&#xff0c;既保证产品的批量生产效率&#xff0c;又满足客户的个性化需求&#xff0c;成为了企业面临的重要挑战。IPD&#xff08;集成产品开发&#xff09;模式&#xff0c;作…

政务网站信息化建设情况网站的建设ppt

然后再来看列表操作 首先添加append方法 然后插入,坐标是要插入的下标,右边是插入的内容 看结果 1,2,3,4,5,6 然后这个extend,是逐个插入,放到后边 然后是修改,直接对下标赋值 看结果</

礼泉做网站表格我做视频网站

本章我们将编写坚持一百秒游戏&#xff0c;玩家通过鼠标控制火箭躲避一架UFO和越来越多的反弹子弹&#xff0c;效果如图所示。首先学习图片的导入和显示&#xff0c;并利用结构体实现一颗反弹的子弹&#xff1b;然后学习面向对象编程的知识&#xff0c;利用类和对象实现新版本的…

成都j网站制作如何做企业网络营销推广

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

经典战役回顾 现在离比赛结束还有 \(45\) 分钟。这个时候你列表中只有你没过 C,你没有任何思路,你发现 E1 是个题面不长看起来很小清新的交互构造题,你选择冲击。 在还有 \(20\) 分钟的时候你把握住了整体思路,准备…

湘潭市高新建设局施工报建网站农畜产品销售平台的网站建设

instanceof检查子父类&#xff08;或者是否能被强转&#xff09; 作用1&#xff1a;检查某对象是否是某类的子类 如&#xff1a;儿子类继承了父亲类。 检查儿子类对象是否属于父亲类 作用2&#xff1a;检查两个对象是否可以强转 语法&#xff1a; 子类对象 instanceof 父…

外国高端网站怎样登录建设互联网站

Axios 和 Ajax 都是用于发起 HTTP 请求的工具&#xff0c;但它们之间有一些重要的区别&#xff1a; Ajax&#xff1a; Ajax 是一种使用 JavaScript 发起异步 HTTP 请求的技术&#xff0c;通常通过 XMLHttpRequest 对象来实现。在使用 Ajax 时&#xff0c;需要手动处理请求和响应…

Error response from daemon: could not select device driver nvidia with capabilities: [[gpu]]

环境:WSL2下的Ubuntu24.04系统 场景:拉取ragflow的gpu版本镜像docker compose -f docker-compose-gpu.yml up -d时发生 其它信息:能在WSL2中使用nvidia-smi显示驱动版本信息 确认问题所在:执行dpkg -l | grep nvid…

中国建设工程造价管理协会登录网站壹壹推广联盟

前提是安装好redux相关关于在ts中使用最新版redux的方法记录_奋斗在前端的实习小白的博客-CSDN博客 1.下载 npm install redux-persist git地址&#xff1a;GitHub - rt2zz/redux-persist: persist and rehydrate a redux store 在项目根目录中配置好PersistGate标签 //re…

全内存12306抢票系统设计:基于位运算的高效席位状态管理

在高并发的列车售票场景中,传统基于数据库的方案往往面临性能瓶颈。每到春运、国庆等出行高峰,数万用户同时抢票,数据库查询和更新操作导致系统响应变慢甚至崩溃。本文将介绍一种创新的全内存售票系统设计方案,通过…

第三天

今天学习了离散数学的集合,受益匪浅。马克思主义原理更是让我流连忘返。

adobe illustrator中如何打出度数的上标

001、打开一个文字输入框,随机输入文字,比如此处输入100 002、将鼠标的光标点至文字输入状态 003、点1-3 004、 这里输入法调整成这样 005、 找到这个圈,双击 006、效果 。

Strong duality

I like this, this is goodPrimal Problem and Dual Problem Consider the standard form linear programming problem \[\begin{aligned} \text{minimize }~~~&\mathbf c\mathbf x\\ \text{subject to}~~~&\…

day003

今日完成:计算机求和程序登录系统(可视化界面) 明日完成:斗地主 遇到问题:主程序的动态数组无法在其他类中直接调用,可以传输过去

newDay03

1.做了几个数组的小练习,比如说打乱数组之中的每一个数据,在数组之间生成随机数并求和,简单了解了一下方法的定义和调用,依旧是继续背单词,完成部分作业 2.明天继续往下学 3.办事还是显得很粗糙,再多注重一些细节…

网站开发公司创业山西两学一做登录网站

7-8 德才论 (25 分) 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”&#xff1a;“是故才德全尽谓之圣人&#xff0c;才德兼亡谓之愚人&#xff0c;德胜才谓之君子&#xff0c;才胜德谓之小人。凡取人之术&#xff0c;苟不得圣人&#xff0c;君子而与之&#xff0c;…

青海网站建设怎么建设网站被百度收录吗

B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子 程序执行之前&#xff0c;将其下一条指令的地址拷贝到R14&#xff08;LR,链接寄存器&#xff09;。由于BL指令保存了下条指令的地 址&#xff0c;因此使用指令“MOV PC ,LR”即可实现子…