【发布时间】:2019-03-04 04:56:50
【问题描述】:
基本上,我的 SQL 代码试图获取下午 5:15 之后留下来工作的人的百分比。这两张桌子代表一张在下午 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;
第二张桌子people_that_stayed_late 基本上是 2017 年 7 月 3 日下午 5:15 之后没有离开大楼的人。每次运行查询时都会出现错误:
ERROR: syntax error at or near "WITH"
LINE 7: WITH people_that_stayed_late AS (
我知道我在第二个表中使用了第一个表,但我不明白为什么它会给我这个错误。此外,我还没有计算得到百分比,因为我想看看我是否得到了正确的数字,哪些人在 2017 年 7 月 3 日下午 5 点 15 分之后上班和迟到。
【问题讨论】:
标签: sql postgresql common-table-expression