sql with as用法详解

下面是SQL WITH AS用法的详解攻略,内容包括WITH AS的含义、语法、用法、示例等方面。

含义

WITH AS是一种用于创建临时表格的SQL 语句。它可以改善可读性,包含在它中的代码块可以使查询更加优雅清晰。

语法

WITH AS语句由两个部分组成:

  • 第一部分是WITH关键字。后面紧跟着一个或多个定义代表临时表格名称(也叫作查询块)的逗号分隔子句。
  • 第二部分是SELECT语句,从这个语句中派生出临时表格。

语法如下:

WITH temp_table (column_1, column_2, ...) AS  
(SELECT column_1, column_2, ...  
FROM table_name)  
SELECT *  
FROM temp_table;

其中,temp_table是临时表格名称,(column_1, column_2, ...)是临时表格的列名,table_name是原始表格的名称,*表示选取表格中所有的列。需要注意的是,SELECT语句中的列名和临时表格中的列名需要对应。

用法

WITH AS可用于以下场景:

  • 重新利用同一个子查询
  • 将复杂的操作分解为多个可读的模块

使用临时表格通常可以减少代码的重复编写,提高查询的可读性、可维护性和效率。

示例

下面是两个使用WITH AS语句的示例,分别说明对于某些复杂查询,该语句可以使查询更加直观、简洁和可读。

示例一

下面的查询将压缩各个州的销售值,并针对甲地、乙地进行比较,查看其销售额的增长情况。这个查询用到了两个WITH AS段,分别是销售

WITH 
州 AS (
  SELECT DISTINCT state, name
  FROM locations
),
销售 AS (
  SELECT 
    客户名称, 
    州, 
    订单日期, 
    SUM(销售额) AS 销售额
  FROM orders
  JOIN 州 ON orders.州名称 = 州.名称
  GROUP BY 客户名称, 州, 订单日期
)
SELECT 
  t1.销售人员姓名, 
  t1.客户名称, 
  t1.州名称 AS '甲地', 
  t2.州名称 AS '乙地', 
  t1.销售额 AS '2021年销售额', 
  t2.销售额 AS '2022年销售额'
FROM 
  销售 t1 
  JOIN 销售 t2 ON t1.客户名称 = t2.客户名称 
    AND t1.订单日期 < t2.订单日期 
  JOIN 州 AS s1 ON t1.州 = s1.州 
  JOIN 州 AS s2 ON t2.州 = s2.州 
WHERE s1.state = '甲州' 
  AND s2.state = '乙州';

示例二

下面的查询从score_list表格中获取每个班级每个学生的平均分值,并针对所有班级进行排序,查询出平均分数最高的前三个班级。

WITH 
  classes AS (SELECT DISTINCT class_id FROM score_list), 
  class_scores AS (
    SELECT 
      class_id, 
      AVG(score) AS avg_score
    FROM score_list 
    GROUP BY class_id
  )
SELECT 
  class_scores.class_id, 
  ROUND(class_scores.avg_score, 2) AS avg_score
FROM 
  class_scores 
  JOIN classes ON classes.class_id = class_scores.class_id 
ORDER BY class_scores.avg_score DESC 
LIMIT 3;

以上就是WITH AS用法的详细攻略。希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sql with as用法详解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • MySql各种查询方式详解

    MySql各种查询方式详解 前言 MySql是一种开源的关系型数据库管理系统,具有跨平台、高性能、高可靠性等特点,被广泛应用于Web开发及其他领域。在MySql中,查询是最基本的操作之一,而各种不同的查询方式也给我们在实际使用中带来了不同的便利。本文将介绍MySql中各种常见的查询方式,供读者参考。 简单查询 简单查询是指只涉及到单个表的查询方式,常用的操作…

    database 2023年5月22日
    00
  • Windows下SQL Serever 2012彻底卸载删除教程

    当需要卸载SQL Server 2012时,我们可以按照以下步骤进行操作。需要注意的是,下面的示例操作命令需要在管理员模式下运行。 步骤一:停止SQL Server服务并禁用其启动 在控制面板的”管理工具”中打开”服务”,找到并停止所有SQL Server相关服务。然后在”属性”中将服务的启动类型改为”禁用”。 net stop MSSQL$SQL2012 …

    database 2023年5月22日
    00
  • python cx_Oracle模块的安装和使用详细介绍

    Python cx_Oracle模块的安装和使用详细介绍 概述 cx_Oracle是Python语言下操作Oracle数据库的扩展模块,使用它可以在Python中方便地执行SQL语句、存储过程等数据库操作。本文将针对该模块的安装及使用进行详细介绍。 安装 安装Oracle Instant Client 在安装cx_Oracle模块之前,需要先安装Oracle…

    database 2023年5月22日
    00
  • MySQL语句汇总整理

    MySQL语句汇总整理是一篇介绍 MySQL 数据库常用操作语句的文章,可以帮助读者快速熟悉 MySQL 数据库的使用。下面是该攻略的详细讲解。 1. 什么是 MySQL 语句 MySQL 语句是指操作 MySQL 数据库的命令语句,包括数据的增删改查等基本操作。在使用 MySQL 数据库时,需要熟练掌握 MySQL 语句的使用方法。 2. 常用 MySQL…

    database 2023年5月21日
    00
  • Neo4j和MySQL的区别

    Neo4j 和 MySQL 的区别 1. 数据结构 Neo4j 是一种图形数据库,它以节点和边为基础构建了一张图来存储数据,而 MySQL 则是关系型数据库,它以表为基础来存储数据。 在 Neo4j 中,我们可以使用节点作为数据模型和存储单元,节点可以有任意数量的属性,且节点之间可以通过边互相连接,边也可以带有任意数量的属性,这种数据结构非常适合表达复杂的关…

    database 2023年3月27日
    00
  • windows上安装mysql5.7

    安装前准备: 系统:windows7-x64 MySql:mysql5.7.19-X64-windows压缩包 安装步骤: 在windows上安装mysql有两种方式,一种是安装mysql压缩包,一种是图形化的安装,只要是配置好my.ini配置文件,压缩包安装比图形化更快更简单。这篇文章主要说明mysql压缩包的安装步骤。 一、新建数据库文件存放目录 将my…

    MySQL 2023年4月12日
    00
  • ubuntu下mysql的常用命令

    下面是详细讲解“ubuntu下mysql的常用命令”的攻略。 一、安装MySQL Ubuntu下安装MySQL数据库可以通过以下命令: sudo apt-get update # 更新软件包列表 sudo apt-get install mysql-server # 安装MySQL数据库服务器 在安装MySQL的过程中,会有提示框要求你设置root用户的密码…

    database 2023年5月22日
    00
  • 9种 MySQL数据库优化的技巧

    9种 MySQL数据库优化的技巧 MySQL是一款开源的关系型数据库管理系统,广泛用于互联网应用中。但是,如果不做好相应的优化,它的性能可能会受到严重的影响。下面是9种MySQL数据库优化的技巧,可以有效地提升系统的性能: 1. 设计良好的数据表结构 设计良好的表结构可以为系统提供更好的性能,具体包括以下方面: 合理使用数据类型,避免使用不必要的字段和重复的…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部