添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
路过的大象  ·  Apache OpenOffice ...·  1 周前    · 
想出国的豆腐  ·  PostgreSQL Python: ...·  5 天前    · 
谦逊的楼梯  ·  Introduction to plottable·  3 天前    · 
睿智的钢笔  ·  Plots in plottable·  3 天前    · 
温柔的苹果  ·  GitHub - ...·  2 天前    · 
捣蛋的凉茶  ·  使用对 GitHub Codespaces ...·  4 月前    · 

Db2 CTE

Summary : in this tutorial, you will learn how to use Db2 common table expression or CTE to query data from tables.

Introduction to Db2 common table expression or CTE

A common table expression a temporary view defined and used during the duration of a SQL statement.

The following illustrates the syntax of the Db2 CTE:

WITH cte_name[(column_list)] AS
(CTE_definition)
SQL_statement;
Code language: SQL (Structured Query Language) (sql)

In this syntax:

  • First, specify the name of the CTE. Later, you can refer to the common table expression name in the SQL statement.
  • Next, specify a list of comma-separated columns after the table expression name. The number of columns must be equal to the number of column return by the CTE definition.
  • Then, use the AS keyword after the table expression name or column list if available.
  • After, provide a SQL statement to feed data to the CTE.
  • Finally, use a SQL statement such as SELECT , INSERT , UPDATE , or DELETE that refers the CTE. Notice that you can refer to the same common table expression multiple times in a query.

When to use DB2 CTE

You can use a common table expression in the following scenarios:

  • When you want to avoid creating views for reference in an SQL statement.
  • When the same result set needs to be referenced multiple times in a query.
  • When the results need to be derived using recursion.

DB2 CTE examples

Let’s take some examples of using the CTE to get a better understanding.

1) Using CTE to return the average of totals example

The following query finds the average number of books published between 2000 and 2001 from the books table:

WITH CTE AS (
    SELECT 
        YEAR(published_date) published_year,
        COUNT(*) published_book
        books
    WHERE 
        published_date IS NOT NULL      
    GROUP BY 
        YEAR(published_date)
SELECT 
    AVG(published_book) average_books_pear_year
WHERE 
    published_year BETWEEN 2000 and 2018;
Code language: SQL (Structured Query Language) (sql)

In this example:

  • First, the cte returned the published years of books and the number of published books each year.
  • Then, the outer query used the cte to calculate the average total of books published between the year 2000 and 2018.

Here is the output:

AVERAGE_BOOKS_PEAR_YEAR 
---------------------- 
Code language: SQL (Structured Query Language) (sql)

2) Referring a CTE multiple times example

This query uses the CTE to return the publisher that has the highest average rating of its books.

WITH cte AS(
    SELECT 
        name, 
        AVG(rating) avg_rating
        books
    INNER JOIN publishers USING (publisher_id)
    GROUP BY 
SELECT 
    name,