동일한 결과를 수행해야하는 두 개의 다른 SQL 쿼리가 다르게 작동하는 이유는 무엇입니까?

Denis_newbie

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);

내 데이터 스키마는 다음과 같습니다. 여기에 이미지 설명 입력

GMB

두 쿼리 모두 원하는 작업을 수행하지 않습니다. 당신은 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

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관