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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다