首页 > 解决方案 > 当列不早于特定日期时选择唯一名称

问题描述

我正在尝试在这里进行原始查询,我不知道这是否可能。

这是表架构:

表名:army_attack

列:

army_name varchar
created_at date
attacked_to varchar
first_attacked_at date

我想检索第一次攻击是在 1885 年的所有军队名称。

我可以简单地做:

select distinct(army_name) 
from army_attack 
where first_attacked_at between '1885-1-1' and '1885-12-31'

但是,如果这支军队在 1885 年之前也发动了袭击呢?是否有任何窗口功能可以做到这一点?或任何可能有帮助的东西?

标签: sqldatabasepostgresql

解决方案


使用子查询提取在 1884 年之前第一次进攻的军队

SELECT DISTINCT(army_name) from army_attack
WHERE first_attacked_at BETWEEN '1885-1-1' and '1885-12-31' 
and army_name not in 
(select army_name from army_attack where first_attacked_at <='1884')

推荐阅读