我可以在另一个 WITH table AS 中使用 WITH table AS 吗?

Can I use a WITH table AS inside another WITH table AS?

基本上,我的 SQL 代码试图让在 5:15 下午后继续工作的人的百分比。这两个 table 代表一个在 5:15 下午之后留下来的,一个在 5:15 之前离开的。以下是我的查询:

WITH people_that_left_early AS ( 
SELECT username, MAX(created_at) AS timestamp
FROM doorlogs
WHERE created_at <= '2017-07-03 05:15:00 PM'
AND created_at >= '2017-07-03 06:00:00 AM'
GROUP BY username),

WITH people_that_stayed_late AS (
SELECT a.username, a.event, b.timestamp
FROM doorlogs a 
INNER JOIN people_that_left_early b
ON a.username = b.username
WHERE a.created_at = b.timestamp
AND event <> 'X')

SELECT COUNT(a.username), COUNT(b.username) 
FROM people_that_left_early a 
LEFT JOIN people_that_stayed_late b
ON a.username = b.username;

第二个table people_that_stayed_late基本上是2017年7月3日5:15下午后没有离开大楼的人。每次我运行查询我收到错误:

ERROR:  syntax error at or near "WITH"
LINE 7: WITH people_that_stayed_late AS (

我知道我在第二个 table 中使用第一个 table,但我不明白为什么会出现此错误。此外,我还没有计算百分比,因为我想看看我是否得到了正确的数字,知道谁在那个特定的日子上班,谁在 2017 年 7 月 3 日下午 5:15 后熬夜。

第二次省略WITH关键字即可。

语法是

WITH [ RECURSIVE ] name1 AS (...),
                   name2 AS (...)
                   [ , ... ]
SELECT ...