SQL中的WITH...AS

2024-08-28 11:27:02 浏览数 (3)

在SQL中的AS重命名与ORDER BY排序中我们知道,在SQL中可以利用AS对字段进行重命名,让查询结果更加清晰明了。

而在我们学习了SQL中的基本查询语句后,我们也会开始写稍微复杂一些的SQL语句来查询与分析数据。而在很多时候并不是所有的数据信息查询可以简单的只用一条SQL语句来完成,这其中最常见的就是嵌套查询,也就是在一个查询结果的基础上再进一步查询想要的信息。

利用WITH...AS我们可以首先把SQL中的查询结果存储在一个临时的数据表中,从而可以继续在这个数据表中更一步的查询数据。

WITH...AS

使用WITH...AS的SQL查询语句一般有如下结构:

代码语言:javascript复制
WITH 临时数据表 AS
(
SELECT...
)
SELECT...

下面我们对常用的Customers数据表稍作修改: 在这个表中增加客户的订单数量Orders.

ID

CustomerName

City

Country

Orders

1

David Horn

New York

USA

10

2

Michael Black

Berlin

Germany

5

3

Simon Rock

London

UK

4

4

Anna Setzer

Peking

China

15

5

Michael Black

Hong Kong

China

8

如果想找出订单数量大于5的客户的ID,我们可以利用下面的步骤:

  1. 筛选出所有订单数量大于5的客户的信息,把查询结果存储在一个临时的数据表Major_Customers中
  2. 从Major_Customers中再查询客户的ID.
代码语言:javascript复制
WITH Major_Customers AS
(SELECT *
 FROM Customers
 WHERE Orders > 5
)
SELECT ID
FROM Major_Customers
  1. 用户活跃度分析: WITH ActiveUsers AS (

SELECT user_id, DATE(logged_in_at) AS login_date

FROM user_activity

GROUP BY user_id, login_date

)

SELECT COUNT(DISTINCT user_id) AS daily_active_users

FROM ActiveUsers

WHERE login_date BETWEEN '2024-01-01' AND '2024-01-31';

sql

0 人点赞