table 存在的最后一天
Last day of existence in table
是否可以找到某个人在子集时间范围内退出前 table 最近一天的某一天?
我有类似的东西:
SELECT
id
, MAX(day) AS day
FROM table
WHERE
day >= '2018-01-01' AND day <= '2019-08-17'
AND day != '2019-08-18'
GROUP BY 1
我正在尝试获取日期范围为“2018-01-01”和“2019-08-17”但不在“2019”的table中的所有人-08-18'
但是,这仍然让我捕捉到在原始 table 中确实在“2019-08-18”度过了一天的人,新的 table 只是将那一天排除在外而不是找到当天确实没有记录的人
使用 having
子句:
SELECT id, MAX(day) AS day
FROM table
WHERE day >= '2018-01-01'
GROUP BY id
HAVING MAX(day) <= '2019-08-17';
将所有条件放在 HAVING 子句中:
SELECT
id,
MAX(CASE WHEN day BETWEEN '2018-01-01' AND '2019-08-17' THEN day END) AS day
FROM table
GROUP BY id
HAVING
SUM(CASE WHEN day BETWEEN '2018-01-01' AND '2019-08-17' THEN 1 ELSE 0 END) > 0
AND
SUM(CASE WHEN day = '2019-08-18' THEN 1 ELSE 0 END) = 0
是否可以找到某个人在子集时间范围内退出前 table 最近一天的某一天?
我有类似的东西:
SELECT
id
, MAX(day) AS day
FROM table
WHERE
day >= '2018-01-01' AND day <= '2019-08-17'
AND day != '2019-08-18'
GROUP BY 1
我正在尝试获取日期范围为“2018-01-01”和“2019-08-17”但不在“2019”的table中的所有人-08-18'
但是,这仍然让我捕捉到在原始 table 中确实在“2019-08-18”度过了一天的人,新的 table 只是将那一天排除在外而不是找到当天确实没有记录的人
使用 having
子句:
SELECT id, MAX(day) AS day
FROM table
WHERE day >= '2018-01-01'
GROUP BY id
HAVING MAX(day) <= '2019-08-17';
将所有条件放在 HAVING 子句中:
SELECT
id,
MAX(CASE WHEN day BETWEEN '2018-01-01' AND '2019-08-17' THEN day END) AS day
FROM table
GROUP BY id
HAVING
SUM(CASE WHEN day BETWEEN '2018-01-01' AND '2019-08-17' THEN 1 ELSE 0 END) > 0
AND
SUM(CASE WHEN day = '2019-08-18' THEN 1 ELSE 0 END) = 0