SQL 쿼리를 읽고 이해하기 위한 단계별 가이드 - KDnuggets

SQL 쿼리를 읽고 이해하기 위한 단계별 가이드 – KDnuggets

소스 노드 : 3091384

SQL 쿼리를 읽고 이해하기 위한 단계별 가이드
이미지로 Freepik
 

SQL(Standard Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS) 내에서 데이터를 관리하고 조작하기 위한 프로그래밍 언어입니다. 기업이 데이터에 원활하게 액세스할 수 있도록 많은 회사에서 사용되는 표준 언어입니다. 널리 사용되기 때문에 채용 담당자는 일반적으로 SQL을 필요한 기술 중 하나로 언급합니다. 그렇기 때문에 SQL에 대해 배우는 것이 필수적입니다.

SQL을 배울 때 사람들이 겪는 일반적인 문제 중 하나는 주로 다른 사람이 쿼리를 작성할 때 쿼리를 이해하는 것입니다. 우리는 회사에서 팀으로 일하며 종종 SQL 쿼리를 읽고 이해해야 합니다. 따라서 우리는 SQL 쿼리를 분해하고 이해하는 연습을 해야 합니다.

이 문서에서는 SQL 쿼리를 읽고 이해하는 단계별 프로세스를 안내합니다. 어떻게 해야 할까요? 그것에 들어가 보자.

SQL 쿼리를 접할 때 가장 먼저 해야 할 일은 SQL 쿼리의 일반적인 의도를 이해하는 것입니다. 일반적인 의도는 쿼리 구조에 대해 완전히 알고 있다는 의미는 아닙니다. 전반적인 흐름에 관한 것입니다.

일반 SQL 쿼리를 이해하려면 표준 SQL 쿼리를 이해해야 합니다. 대부분의 SQL 쿼리는 다음으로 시작합니다. SELECT 조항을 따르고 FROM 절. 거기에서 계속해서 쿼리가 가장 자주 뒤따릅니다. JOIN, WHERE, GROUP BY, 주문,지키는 조항.

위의 절은 우리가 이해해야 하는 SQL 쿼리의 표준입니다. 각 절의 기능은 다음과 같습니다.

  1. SELECT: 테이블에서 가져올 열
  2. FROM: 데이터가 어느 테이블에서 왔는지
  3. JOIN: 지정된 식별자로 테이블을 결합합니다.
  4. WHERE: 조건에 따른 데이터 필터
  5. GROUP BY: 컬럼의 값을 기준으로 데이터를 정리하고 집계 기능을 수행할 수 있도록 합니다.
  6. 주문: 특정 컬럼을 기준으로 데이터 결과 순서를 정렬합니다.
  7. 지키는: 로 지정할 수 없는 집계 함수의 필터 조건입니다. WHERE

일반적인 SQL 쿼리 구조를 이해할 때 가장 먼저 찾아야 할 표준절과 내용입니다. 예제 코드를 사용하여 더 자세히 알아봅시다.

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

위 쿼리를 보시면서 표준조항을 찾아보세요. 이 조항은 어떤 데이터가 선택되었는지에 대한 이해를 제공합니다(SELECT), 어디에서 왔는지 (FROM JOIN), 조건(WHERE, GROUP BY, 주문지키는). 

예를 들어, 위의 쿼리를 읽으면 다음 내용을 이해할 수 있습니다.

  1. 우리는 세 가지 종류의 데이터를 얻으려고 합니다. 이름은 고객이라는 테이블에서, 제품은 구매라는 테이블에서, 그리고 테이블의 출처와 별칭 total_price(Information from 절을 사용하여 테이블의 출처를 식별하지 못하는 가격 열의 집계)입니다. SELECT). 
  1. 전체 데이터는 구매의 cust_id 열과 고객 테이블의 id 열을 사용하여 함께 결합하는 구매 및 고객 테이블에서 가져옵니다(Information from 절) 에서)JOIN). 
  1. 구매 테이블의 카테고리 열 값이 '주방'인 데이터만 선택합니다(Information from Clause). WHERE), 
  1. 해당 테이블에서 가져온 이름 및 제품 열을 사용하여 집계 함수에 대한 그룹(Information from 절) GROUP BY), 
  1. total_price가 10000을 초과하는 집계 함수 결과 합계에서도 필터링됩니다(절의 정보). 지키는), 그리고 
  1. total_price(절의 정보)에 따라 내림차순으로 데이터를 정렬합니다. 주문).

이것이 알고 식별해야 하는 일반적인 SQL 쿼리 구조입니다. 여기에서 고급 쿼리를 통해 더 자세히 탐색할 수 있습니다. 다음 단계를 진행해 보겠습니다.

너무 많은 질문이 포함된 복잡한 쿼리를 접하게 될 때가 있을 것입니다. SELECT 동일한 쿼리에 절이 존재합니다. 이 경우 쿼리의 최종 결과 또는 최종(첫 번째)을 이해해야 합니다. SELECT 쿼리에 표시됩니다. 핵심은 쿼리 출력이 원하는 것이 무엇인지 아는 것입니다.

아래와 같이 좀 더 복잡한 코드를 사용해 보겠습니다.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

이제 쿼리가 더 복잡하고 길어 보이지만 초기 초점은 최종 쿼리에 맞춰져야 합니다. 선택하다, 이는 고객의 총 지출 및 구매 내역을 생성하려는 것 같습니다. 최종 결과가 무엇인지 평가하고 거기서부터 분석해 보세요.

우리는 결과에 대한 통찰력이 쿼리를 통해 나와야 한다는 것을 알고 있습니다. 다음 부분은 최종 조건이 무엇인지 확인하는 것입니다. SELECT 이다. 다음을 포함한 조건 조항 WHERE, GROUP BY, 주문지키는 전반적인 데이터 결과를 통제하는 사람들이었습니다. 

쿼리 조건을 읽고 이해하면 쿼리의 최종 결과를 더 잘 이해할 수 있습니다. 예를 들어, 이전 SQL 쿼리에서 최종 조건은 다음과 같습니다. 주문. 즉, 최종 결과는 전체 제품 가격을 기준으로 내림차순으로 정렬됩니다. 

최종 조건을 알면 쿼리의 상당 부분과 전반적인 쿼리 의도를 이해하는 데 도움이 됩니다.

마지막으로 데이터가 어디서 오는지 이해해야 합니다. 선택할 데이터와 이를 얻기 위한 조건을 알고 나면 소스를 이해해야 합니다. 마지막 JOIN 절을 통해 테이블이 상호 작용하는 방식과 데이터 흐름을 이해할 수 있습니다.

예를 들어 이전의 복잡한 쿼리에서는 Join을 두 번 수행했음을 보여줍니다. 이는 최종 결과를 위해 최소 3개의 데이터 소스를 사용했음을 의미합니다. 이 정보는 특히 데이터 소스가 하위 쿼리에서 나오는 경우 각 데이터 소스가 어떻게 생성되는지 더 자세히 이해하기 위해 이후 단계에서 필요합니다.

최종 결과가 어떻게 되어야 하는지, 그 결과가 어디서 나오는지 이해한 후에는 세부 사항을 자세히 살펴볼 필요가 있습니다. 여기에서 각 하위 쿼리로 돌아가서 왜 그렇게 구성되었는지 이해합니다.

그러나 우리는 이를 하향식 구조로 보려고 하지 않습니다. 대신 최종 결과에 더 가까운 하위 쿼리를 살펴보고 최종 결과에서 가장 먼 하위 쿼리로 올라가도록 노력해야 합니다. 위의 코드 예에서 먼저 이 코드를 이해해야 합니다.

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

그런 다음 가장 먼 코드인 다음 코드로 이동합니다.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

각 하위 쿼리를 결과에 가까운 것부터 가장 먼 것까지 세분화하면 작성자의 사고 과정을 명확하게 추적할 수 있습니다. 

각 하위 쿼리를 이해하는 데 도움이 필요하면 위의 프로세스를 반복해 보세요. 몇 가지 연습을 통해 쿼리를 읽고 이해하는 데 있어 더 나은 경험을 하게 될 것입니다.

SQL 쿼리를 읽고 이해하는 것은 모든 회사가 SQL 쿼리를 처리하는 현대 시대에 누구나 갖춰야 할 기술입니다. 다음 단계별 가이드를 사용하면 복잡한 SQL 쿼리를 더 잘 이해할 수 있습니다. 단계는 다음과 같습니다.

  1. 일반 SQL 쿼리 구조 이해
  2. 최종 선택 이해
  3. 최종 조건 조항 이해
  4. 최종 조인 이해
  5. 역순 읽기 및 반복

 
 

코넬리우스 유다 위자야 데이터 과학 보조 관리자 및 데이터 작성자입니다. Allianz Indonesia에서 풀타임으로 일하는 동안 그는 소셜 미디어와 글쓰기 미디어를 통해 Python 및 데이터 팁을 공유하는 것을 좋아합니다.

타임 스탬프 :

더보기 너 겟츠