이 조회는 각 대륙의 최대 국가를 찾습니다. 대륙, 이름 및 지역을 보여줍니다.SQL 상관 부속 조회 이벤트 순서
SELECT
c1.continent,
c1.name,
c1.area
FROM
countries c1
WHERE
c1.area = (
SELECT
MAX(c2.area)
FROM
countries c2
WHERE
c1.continent = c2.continent
)
내가 제대로 서브 쿼리가 같은 대륙 모든 C2 항목에 C1에서 각 항목의 대륙과 일치 최대를 찾을 수 이해 야합니다. 그렇다면 c1의 모든 항목에 대해 하위 쿼리가 실행됩니다. 그게 불필요하지 않은가?
누군가이 쿼리에서 발생하는 이벤트의 순서를 설명하고이를 수행하는 더 좋은 방법이 있는지 알려주십시오. 감사.
당신이 사용하고있는 데이터베이스 창 기능을 사용하는 경우 표준 SQL이 일반적으로 훨씬 빠릅니다? 나는 오라클, MySQL 또는 SQL 서버를 의미합니까? – Aruna
@ gordon-linoff의 답은 매우 훌륭한 대답입니다. 귀하의 RDBMS에 따라보다 효율적인 접근 방법에 관해서는, (i.name, rownum = ROW_NUMBER() OVER (PARTITION BY i.continent ORDER BY i.area DESC)의 하위 쿼리를 제안합니다. i) 조인 rownum = 1을 포함한 기준으로 모든 대륙에서 가장 큰 국가의 이름을 부여합니다. – Forty3
@Aruna 저는 Postgres를 사용하고 있습니다 –