为什么我的两个必须执行相同结果的不同 sql 查询表现不同?

Why two of my different sql queries that must perform the same result act different?

我需要获取 1990 年的新买家数量。 第一个查询说它是 17,但第二个查询说它是 29?那么哪一个是错误的,为什么?

SELECT DISTINCT COUNT(customer_id) FROM SALES_ORDER WHERE
EXTRACT(YEAR FROM order_date) = 1990
AND
customer_id NOT IN (SELECT customer_id FROM SALES_ORDER WHERE EXTRACT(YEAR FROM order_date) < 1990);
SELECT DISTINCT COUNT(customer_id) FROM SALES_ORDER WHERE
customer_id IN (SELECT customer_id FROM SALES_ORDER WHERE EXTRACT(YEAR FROM order_date) = 1990)
AND
customer_id NOT IN (SELECT customer_id FROM SALES_ORDER WHERE EXTRACT(YEAR FROM order_date) < 1990);

这是我的数据模式:

这两个查询都不符合您的要求。您正在使用 SELECT DISTINCT COUNT(customer_id),而您可能需要 SELECT COUNT(DISTINCT customer_id).

我发现用两级聚合表达逻辑会更简单:

select count(*)
from (
    select customer_id
    from sales_order
    group by customer_id
    having extract(year from min(order_date)) = 1990
) t