再说WITH子句

2024-06-04 17:08
文章标签 子句

本文主要是介绍再说WITH子句,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文档地址:http://docs.oracle.com/cd/B19306_01/server.102/b14223/aggreg.htm#sthref1670

 

Computation Using the WITH Clause

 

   The WITH clause (formally known assubquery_factoring_clause) enables you to reuse thesame query block in a SELECT statement when it occursmore than once within a complex query. --WITH子句让你能够在一个复杂SELECT查询中重用相同的查询块(利用名字)

 

WITH is a part of theSQL-99 standard. This is particularly useful when a query hasmultiple references to the same query block and there are joins andaggregations.

 

 Using theWITH clause, Oracle retrieves the results of a queryblock and stores them in the user's temporarytablespace.--使用WITH子句,甲骨文查询一个查询块的结果并且把他们存储在用户临时表空间上

 

 Note that OracleDatabase does not support recursive use of the WITHclause.

--注意甲骨文数据库并不支持循环使用WITH子句。

 

   The following query is an example ofwhere you can improve performance and write SQL more simply byusing the WITHclause.---下边的查询的例子,你能够改善性能和书写SQL简单。

 

 The query calculates the sum of sales for eachchannel and holds it under the name channel_summary.Then it checks each channel's sales total to see if any channel'ssales are greater than one third of the total sales. By using theWITH clause, the channel_summary data iscalculated just once, avoiding an extra scan through the largesales table.

Example 20-15 WITHClause

WITH channel_summary AS (SELECT channels.channel_desc, SUM(amount_sold)
AS channel_total FROM sales, channels
WHERE sales.channel_id = channels.channel_id GROUP BY channels.channel_desc)
SELECT channel_desc, channel_total
FROM channel_summary WHERE channel_total > (SELECT SUM(channel_total) * 1/3
FROM channel_summary);
CHANNEL_DESC         CHANNEL_TOTAL
-------------------- -------------
Direct Sales            57875260.6

Note that this example could also be performed efficiently usingthe reporting aggregate functions described in Chapter 21, "SQL for Analysis and Reporting".

这篇关于再说WITH子句的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030601

相关文章

【C++】try 语句捕获异常,catch子句处理异常

#include <iostream>#include <stdexcept>using namespace std;int main(){int i1, i2;while(cin >> i1 >> i2){try{if (i2 == 0)throw runtime_error("分母为0!");cout << "i1除以i2的结果是: " << i1/i2 << endl;}catch(ru

MySQL必会知识精华5(WHERE简单子句)

我们的目标是:按照这一套资料学习下来,大家可以完成数据库增删改查的实际操作。同时轻松应对面试或者笔试题中MySQL相关题目。     上篇文章我们先做一下数据库的SELECT简单查询的方法。本篇文章主要介绍查询的WHERE子句的使用方法。 1、使用WHERE简单子句 数据库有很多数据,很多时候我们只是需要一部分,这时候就牵涉到筛选的功能。 可以使用WHERE 子句 SELECT

PostgreSQL LIMIT 子句的使用与优化

PostgreSQL LIMIT 子句的使用与优化 引言 PostgreSQL 是一款功能强大的开源关系型数据库管理系统,它以其稳定性、可扩展性和高性能而闻名。在处理大量数据时,我们经常需要限制返回的记录数量,以提高查询效率和减少数据传输量。这时,LIMIT 子句就变得非常有用。本文将详细介绍 PostgreSQL 中 LIMIT 子句的使用方法,并提供一些优化建议。 LIMIT 子句的基本

问题解决:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效

文章目录 问题场景问题环境问题原因解决方案结果总结随缘求赞 问题场景 因为项目需要,需要在公共框架里面引入sqlserver方言类。而在实现sqlserver方言类之后,调用方言类的方法的时候,发现一个错误 错误提示如下: >[错误] 脚本行:1-10 --------------------------------------Id 1033, Level 15, State

Partition by子句

上篇博客写到使用开窗函数来进行数据查询,那么over关键字可以加什么查询条件呢?下面先介绍一下其中之一的partition by子句。 开窗函数的over关键字后括号中可以使用Partition by字句来定义行的分区来进行聚合运算。与group by 字句不同,partition by字句创建的分区是独立于结果集的,创建的分区只是提供聚合计算的,而且不同的开窗函数所创建的分区也不相互影响。

【MySQL进阶之路】 group by子句——分组查询

目录 引言 聚合函数 案例 个人主页:东洛的克莱斯韦克-CSDN博客 引言 GROUP BY 子句在 SQL 中用于将查询结果集按照一个或多个列进行分组。当与聚合函数(如 COUNT(), SUM(), AVG(), MAX(), MIN())一起使用时,GROUP BY 可以帮助我们对每个分组执行计算。 语法 SELECT column_name(s), AGGREG

选择列表中的列 'XXXX' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

其实初学的时候看到这个会很困惑,为什么没有包含?聚合函数又是什么?小朋友,你是否有很多问号?首先讲一些很浅显的,也就是这个问题的解决方案。其实就如字面意思说的那样,你没有包含该列,因此你不能GROUP BY.。文字总是苍白的,我也不想敲太多,放两张图的事就明白了。方法一:把该列包含进去 方法二:用ORDER BY 接下来就是深层次的东西了,为什么要包含进去,为什么ORDER BY可以而GROUP

Oracle存储过程中的IN子句传参字符串的问题

在实际使用中,经常会有带in的子查询,如where id in (1,2,3),或者where name in ('a','b','c')这样的情况,但是到存储过程中,如果使用变量当作查询条件会有问题。 示例: CREATE OR REPLACE PROCEDURE test (vi_types in VARCHAR2)AS vs_str VARCHAR2(100);BEGIN-

MySQL limit子句用法及优化(Limit Clause Optimization)

在MySQL中,如果只想获取select查询结果的一部分,可以使用limit子句来限制返回记录的数量,limit在获取到满足条件的数据量时即会立刻终止SQL的执行。相比于返回所有数据然后丢弃一部分,执行效率会更高。 文章目录 一、limit子句用法示例1.1 基本用法1.2 limit和order by1.2.1 排序瓶颈优化 二、limit分页优化2.1 延迟关联2.2 转换为位置查询2

postgresql报错:列“XXX”必须出现在GROUP BY子句中或在聚合函数中使用

背景 我在做一个对关联的几张表进行select的操作时,因为有写重复数据,我只需要其中一条,所以我按照字段写了一个group by,希望每个分组只保留一条数据给我就行了。但是一致性就报如题所示的错误。 原因 据了解,postgresql认为select出来的字段必须要在GROUP BY子句中或在聚合函数中使用才行,真没想到就是报错信息的字面意思。 解决 网上搜索到的信息认为要对selec