데이터 사이언스 100번의 노크(구조화 데이터 처리편) – SQL Part 2 (Q21 to Q40)

데이터 사이언스
 
설명:

이 코드는 "receipt"라는 테이블에서 행 수를 선택하는 SQL 쿼리입니다.

SELECT 키워드는 데이터베이스에서 데이터를 가져온다는 것을 나타내기 위해 사용된다.

COUNT 함수는 'receipt' 테이블의 행 수를 계산하는 데 사용됩니다. 이 경우 'COUNT(1)' 문은 각 행의 첫 번째 열의 값이 NULL이 아닌 테이블의 행 수를 계산하는 데 사용된다. 이는 어떤 열이 NULL인지에 관계없이 테이블의 모든 행을 계산하는 "COUNT(*)"를 사용하는 것과 동일하다.

FROM 키워드는 데이터를 가져 오려는 테이블을 나타내는 데 사용되며, 이 경우 "receipt" 테이블을 나타냅니다.

즉, 요약하면 이 쿼리는 "receive" 테이블의 행 수를 선택하고 반환하는 것이다.
 
설명:

이 코드는 "receipt"라는 테이블에서 행 수를 선택하는 SQL 쿼리입니다.

SELECT 키워드는 데이터베이스에서 데이터를 가져온다는 것을 나타내기 위해 사용된다.

COUNT 함수는 "receipt" 테이블의 행 수를 계산하는 데 사용됩니다. 이 경우 "COUNT(*)"문은 어떤 열이 NULL인지 여부에 관계없이 테이블의 모든 행을 계산하는 데 사용됩니다.

FROM 키워드는 데이터를 가져 오려는 테이블, 이 경우 "RECIPATE" 테이블을 나타내는 데 사용됩니다.

즉, 요약하면, 이 쿼리는 "RECIPATE" 테이블의 모든 행을 선택하고 그 개수를 반환한다.
 
설명:

이 코드는 "receipt"라는 테이블에서 다른 고객 ID의 개수를 선택하는 SQL 쿼리이다.

sql은 이 코드가 SQL 코드임을 나타내는 Jupyter Notebook의 셀 매직 명령이다.

SELECT 키워드는 데이터베이스에서 데이터를 가져온다는 것을 나타내기 위해 사용된다.

COUNT 함수는 'RECIPATE' 테이블에서 다른 고객 ID의 수를 계산하는 데 사용된다. 이 경우 'COUNT(DISTINCT customer_id)' 문은 테이블 내 고유한 고객 ID의 수를 계산하는 데 사용된다.

DISTINCT 키워드는 'customer_id' 열의 고유한 값만 계산하도록 지정하는 데 사용된다.

FROM 키워드는 데이터를 가져 오려는 테이블을 나타내는 데 사용되며, 이 경우 "receipt" 테이블을 나타냅니다.

즉, 요약하면 이 쿼리는 'receive' 테이블의 고유한 고객 ID 개수를 선택하여 반환한다.

 

설명:

SQL 코드가 두 번 반복된다.

이 코드는 "receipt"라는 테이블에서 "store_cd", "amount", "quantity"라는 세 개의 열을 선택한다. 이 테이블에는 특정 매장의 매출 데이터가 포함되어 있다.

SUM 함수를 사용하여 각 매장의 "금액" 열과 "수량" 열의 합계를 계산한다.

GROUP BY 구문은 매출 데이터를 매장별로 그룹화하는 데 사용된다. 즉, 이 쿼리는 'store_cd' 컬럼의 고유한 매장 코드별로 '금액'과 '수량'의 합계를 반환한다.

첫 번째 코드가 두 번째 코드와 완전히 동일하기 때문에 중복 또는 실수일 수 있습니다. 그럼에도 불구하고 이 쿼리는 'receipt' 테이블에서 각 매장의 판매 상품의 총 금액과 수량을 선택하여 반환합니다.
 
설명:

이 코드는 "receipt"라는 테이블에서 각 고객의 최대 매출일(sales_ymd)을 선택하는 SQL 쿼리이다.

sql은 이 코드가 SQL 코드임을 나타내는 Jupyter Notebook의 셀 매직 명령어이다.

SELECT 키워드는 데이터베이스에서 데이터를 가져온다는 것을 나타내기 위해 사용된다.

customer_id와 MAX(sales_ymd)는 'RECIPATE' 테이블에서 선택하고자 하는 컬럼이며, MAX 함수는 'customer_id' 컬럼의 고유한 고객 ID마다 'sales_ymd' 컬럼의 최대값을 선택하기 위해 사용된다.

FROM 키워드는 데이터를 가져올 테이블을 나타내는 데 사용되며, 이 경우 'receive' 테이블이다.

GROUP BY 구문은 고객 ID별로 매출 데이터를 그룹화하는 데 사용된다. 즉, 이 쿼리는 'customer_id' 열의 고유한 고객 ID별로 최대 매출 날짜를 반환한다.

LIMIT 키워드는 쿼리가 반환하는 결과의 수를 제한하는 데 사용된다. 이 경우 'LIMIT 10' 문은 결과를 상위 10개의 행으로 제한한다.

즉, 요약하면, 이 쿼리는 'receipt' 테이블에서 각 고객의 최대 판매일을 선택하여 반환하고, 결과를 상위 10명의 고객으로 제한한다.
 
설명:

이 코드는 "receipt"라는 테이블에서 각 고객의 최소 매출일(sales_ymd)을 선택하는 SQL 쿼리이다.

sql은 이 코드가 SQL 코드임을 나타내는 Jupyter Notebook의 셀 매직 명령어이다.

SELECT 키워드는 데이터베이스에서 데이터를 가져온다는 것을 나타내기 위해 사용된다.

customer_id와 MIN(sales_ymd)은 'RECIPATE' 테이블에서 선택하고자 하는 컬럼이며, MIN 함수는 'customer_id' 컬럼의 고유한 고객 ID마다 'sales_ymd' 컬럼의 최소값을 선택하기 위해 사용된다.

FROM 키워드는 데이터를 가져올 테이블을 지정하는 데 사용되며, 이 경우 'receive' 테이블에서 데이터를 가져온다.

GROUP BY 구문은 고객 ID별로 매출 데이터를 그룹화하는 데 사용된다. 즉, 이 쿼리는 'customer_id' 열의 고유한 고객 ID별로 최소 매출 날짜 값을 반환한다.

LIMIT 키워드는 쿼리가 반환하는 결과의 수를 제한하는 데 사용된다. 이 경우 'LIMIT 10' 문은 결과를 상위 10개의 행으로 제한합니다.

즉, 요약하면 이 쿼리는 'receipt' 테이블에서 각 고객의 최소 매출일을 선택하여 반환하고 결과를 상위 10명의 고객으로 제한하고 있다.
 
설명:

이 코드는 "receipt"라는 테이블에서 고객 ID, 최대 매출일, 최소 매출일을 선택하는 SQL 쿼리이다.

sql은 이 코드가 SQL 코드임을 나타내는 Jupyter Notebook의 셀 매직 명령어이다.

SELECT 키워드는 데이터베이스에서 데이터를 가져온다는 것을 나타내기 위해 사용된다.

customer_id, MAX(sales_ymd), MIN(sales_ymd)은 'recipe' 테이블에서 선택하고자 하는 컬럼이며, MAX는 'customer_id' 컬럼의 고유한 고객 ID별로 'sales_ymd' 컬럼의 최대값을 선택하는 데 사용되며, 'MIN'은 'recipe' 컬럼의 최대값을 선택하는 데 사용된다. 'MIN'은 'customer_id' 열의 고유한 고객 ID별로 'sales_ymd' 열의 최소값을 선택하기 위해 사용된다.

FROM 키워드는 데이터를 가져오고자 하는 테이블을 나타내는 데 사용되며, 이 경우 'receive' 테이블이다.

GROUP BY 구문은 고객 ID별로 매출 데이터를 그룹화하는 데 사용된다. 즉, 이 쿼리는 "customer_id" 열의 고유한 고객 ID별로 매출 날짜의 최대값과 최소값을 반환한다.

HAVING 절은 특정 조건에 따라 결과를 필터링하는 데 사용된다. 이 경우, 주어진 고객 ID에 대해 최대 판매일과 최소 판매일이 같지 않아야 한다는 조건이 있다. 즉, 이 쿼리는 서로 다른 날짜에 구매한 고객만 반환하게 됩니다.

LIMIT 키워드는 쿼리가 반환하는 결과의 수를 제한하는 데 사용된다. 이 경우 'LIMIT 10' 문은 결과를 상위 10개의 행으로 제한한다.

즉, 이 쿼리는 '영수증' 테이블에서 서로 다른 날짜에 구매한 고객의 고객 ID, 최대 판매일, 최소 판매일을 선택하여 반환하고, 결과를 상위 10명의 고객으로 제한하고 있다.

 

설명:

이 코드는 "receipt"라는 테이블에서 매장 코드와 그 평균 매출액을 선택하는 SQL 쿼리이다.

sql은 이 코드가 SQL 코드임을 나타내는 Jupyter Notebook의 셀 매직 명령어이다.

SELECT 키워드는 데이터베이스에서 데이터를 가져온다는 것을 나타내기 위해 사용된다.

"store_cd"와 "AVG(amount) AS avg_amount"는 "receipt" 테이블에서 선택하고자 하는 컬럼이며, AVG 함수는 "store_cd" 컬럼의 고유한 매장 코드별 평균 판매 금액을 계산하는 데 사용되며, AS 키워드는 이 컬럼에 "AVG(amount) AS avg_amount"를 추가하는 데 사용된다. avg_amount'라는 별칭을 부여하는 데 사용됩니다. 이 이름은 쿼리 결과에 표시되는 이름입니다.

FROM 키워드는 데이터를 가져올 테이블을 나타내는 데 사용되며, 이 경우 "receipt" 테이블이다.

GROUP BY 구문은 판매 데이터를 매장 코드별로 그룹화하는 데 사용됩니다. 즉, 이 쿼리는 'store_cd' 열의 고유한 매장 코드별로 평균 매출 금액을 계산하는 것이다.

ORDER BY 구문은 평균 매출액을 기준으로 결과를 내림차순으로 정렬하는 데 사용됩니다. 즉, 평균 매출 금액이 가장 높은 매장이 결과의 상단에 표시되는 것입니다.

LIMIT 키워드는 쿼리가 반환하는 결과의 수를 제한하는 데 사용됩니다. 이 경우 'LIMIT 5' 문장은 결과를 상위 5개 매장으로 제한합니다.

즉, 이 쿼리는 '영수증' 테이블에서 매장 코드와 평균 매출액을 선택하고, 평균 매출액을 기준으로 내림차순으로 정렬하여 상위 5개 매장으로만 결과를 제한하여 반환합니다.
 
설명:

다음은 "receipt"라는 이름의 테이블에서 데이터를 가져오는 SQL 쿼리이다.

이 쿼리는 테이블에서 두 개의 컬럼을 선택합니다." store_cd"와 "amount_50per"다. "store_cd"열은 매장 코드를 나타내고, "amount_50per"열은 각 매장 내 영수증 1장당 사용 금액의 중간값을 계산한다.

중앙값 계산에 사용하는 함수는 'PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY amount)'이다. 이 함수는 '금액' 열을 오름차순으로 정렬하여 50퍼센타일 값을 계산한다. 즉, 순서대로 정렬된 금액 목록의 중간 값을 찾는 것이다.

이 쿼리는 'GROUP BY' 구문으로 결과를 상점 코드별로 그룹화하고, 'ORDER BY' 구문으로 금액의 중간값 내림차순으로 결과를 정렬한다. 그리고 'LIMIT' 절을 사용하여 출력을 상위 5건으로 제한하고 있습니다.

즉, 이 쿼리는 영수증 한 장당 사용 금액의 중간값이 가장 높은 상위 5개 매장을 반환합니다.

 

설명:

"receipt"라는 테이블에서 데이터를 가져오는 SQL 쿼리입니다.

이 쿼리에서는 "product_cnt"라는 CTE(Common Table Expression)를 사용하여 각 상품이 각 매장에서 판매된 횟수를 계산하고, "GROUP BY" 구문을 사용하여 "store_cd"와 "product_cd"로 데이터를 그룹화하고, "COUNT(1)" 함수를 사용하여 각 그룹별 행 수를 계산합니다. COUNT(1)' 함수를 사용하여 각 그룹의 행 수를 계산한다. 결과는 "mode_cnt" 컬럼에 저장된다.

그런 다음 이 쿼리는 "product_mode"라는 또 다른 CTE를 사용하여 "RANK() OVER(PARTITION BY store_cd ORDER BY mode_cnt DESC)" 함수를 사용하여 각 매장의 상품의 "mode_cnt" 값의 순위를 매긴다. 이 함수는 각 상품의 "mode_cnt" 값에 따라 각 매장 내 순위를 부여한다. 모드 카운트가 가장 높은 상품에 1순위를 부여한다.

마지막으로 이 쿼리는 "WHERE rnk = 1" 구문으로 결과를 필터링하여 각 매장에서 가장 많이 팔리는 상품을 선택하고 "ORDER BY" 구문으로 매장 및 상품 코드별로 정렬한다. 'LIMIT' 구문으로 출력을 처음 10줄로 제한하고, 각 매장의 인기 상품의 매장 코드, 상품 코드, 모드 수를 반환한다.

요약하면, 이 쿼리는 판매 횟수를 기준으로 각 매장에서 가장 많이 팔린 상품을 찾아 상위 10개 상품의 매장 코드, 상품 코드, 모드 수를 각각 반환한다.

 

설명:

다음은 "receipt"라는 테이블에서 데이터를 가져오는 SQL 쿼리이다.

이 쿼리에서는 두 개의 컬럼을 선택한다." store_cd"와 각 매장의 "product_cd" 열의 모드입니다.

'MODE() WITHIN GROUP(ORDER BY product_cd)' 함수는 'store_cd'의 각 그룹 내 'product_cd' 값의 모드를 계산한다. mode는 데이터 집합에서 가장 빈번하게 나타나는 값을 의미하며, ORDER BY 구문은 모드를 계산하기 전에 product_cd 값을 오름차순으로 정렬할 것을 지정한다.

이 쿼리는 'GROUP BY' 절을 사용하여 'store_cd'로 데이터를 그룹화하고, 'ORDER BY' 절을 사용하여 'store_cd'로 결과를 정렬한다. 또한 'LIMIT' 구문으로 출력을 처음 10줄로 제한하고 있다.

즉, 이 쿼리는 각 매장의 'product_cd' 값의 모드를 반환하는데, 이는 각 매장에서 가장 많이 판매되는 상품을 나타낸다. 결과는 매장 코드 순으로 정렬되며 상위 10개 매장으로 제한된다.
 
설명:

다음은 "receipt"라는 테이블에서 데이터를 가져오는 SQL 쿼리이다.

이 쿼리에서는 두 개의 컬럼을 선택한다." store_cd"와 각 매장의 "amount" 컬럼의 모분산이다.

'VAR_POP(amount)' 함수는 'store_cd'의 각 그룹 내 'amount' 값의 분산을 계산한다. 분산은 데이터 세트의 확산과 분산을 나타내는 지표이며, "VAR_POP"의 "POP"는 "population"을 의미하며, 분산 계산을 위해 전체 데이터 세트가 사용됨을 의미한다.

이 쿼리는 "GROUP BY" 절을 사용하여 "store_cd"로 데이터를 그룹화하고 "ORDER BY" 절을 사용하여 각 매장의 "amount" 값의 분산을 포함하는 "vars_amount" 열로 결과를 내림차순으로 정렬하고 "LIMIT" 절을 사용하여 출력을 처음 5개 행으로 제한한다. 행으로 출력을 제한합니다.

즉, 이 쿼리는 '금액' 값의 모집단 분산이 가장 큰 상위 5개 매장을 반환하는데, 이는 이들 매장이 영수증 한 장당 사용 금액의 확산과 분산이 가장 크다는 것을 의미한다.

 

설명:

다음은 "receipt"라는 테이블에서 데이터를 가져오는 SQL 쿼리이다.

이 쿼리에서는 두 개의 컬럼을 선택합니다." store_cd"와 각 매장의 "amount" 컬럼의 모표준편차이다.

"STDDEV_POP(amount)" 함수는 "store_cd"의 각 그룹 내 "amount" 값의 표준편차를 계산한다. 표준편차는 데이터 세트의 확산과 분산을 나타내는 지표로, "STDDEV_POP"의 "POP"는 "population"을 의미하며, 표준편차 계산에 전체 데이터 세트가 사용됨을 의미한다.

이 쿼리는 "GROUP BY" 구문을 사용하여 "store_cd"로 데이터를 그룹화하고 "ORDER BY" 구문을 사용하여 내림차순으로 각 매장의 "금액"의 표준편차를 포함하는 "stds_amount" 열에 결과를 정렬하고 "LIMIT" 구문을 사용하여 출력을 처음 5줄로 제한한다.

즉, 이 쿼리는 '금액' 값의 모표준편차가 가장 높은 상위 5개 매장을 반환하므로, 이들 매장은 영수증 한 장당 사용 금액의 확산과 분산이 가장 높다는 것을 의미한다.

 

설명:

"recipate" 테이블의 "amount" 컬럼의 백분위수 값을 계산하기 위해 사용하는 SQL 코드이다. 이 코드에서는 PERCENTILE_CONT 함수를 사용하여 연속적인 백분위수를 계산하고 있다. 이는 백분위수 값이 데이터 포인트 간의 보간값이 아니라 데이터 집합의 실제 값에 해당한다는 것을 의미합니다.

이 코드에서는 25번째 백분위수(amount_25per), 50번째 백분위수(amount_50per), 75번째 백분위수(amount_75per), 100번째 백분위수(amount_100per)의 네 가지 백분위수 값을 지정하여 계산하고 있다. 이 백분위수는 백분위수를 계산하기 전에 WITHIN GROUP 절을 사용하여 'amount' 열을 오름차순으로 정렬합니다.

코드 마지막에 있는 SELECT 문은 계산된 백분위수 값을 쿼리에서 가져와 한 줄의 출력으로 반환한다. 이 코드는 'RECIPATE' 테이블의 'AMOUNT' 컬럼의 분포를 분석하여 데이터 내 이상값이나 비정상적인 패턴을 식별하는 데 유용하다.
 
설명:

다음은 "receipt" 테이블의 각 매장의 평균 거래금액을 조회하고 조건에 따라 결과를 필터링하는 데 사용하는 SQL 코드입니다.

이 코드에서는 먼저 SELECT 문에서 조회할 두 개의 컬럼('store_cd' 컬럼과 각 매장의 '금액' 컬럼의 평균값)을 지정하고, AVG 함수를 사용하여 각 매장의 'amount' 컬럼의 평균을 계산한 후, AS 키워드를 사용하여 계산된 컬럼에 'avg_amount' 라는 별칭을 부여하고 있습니다. 라는 별칭을 부여하고 있습니다.

다음 코드 라인에서는 GROUP BY 구문을 사용하여 'store_cd' 열로 데이터를 그룹화하여 평균 거래 금액이 각 매장에서 개별적으로 계산됨을 의미합니다.

그런 다음 이 코드는 HAVING 절을 사용하여 조건에 따라 결과를 필터링한다. 구체적으로 각 매장의 평균 거래액이 330 이상일 것을 조건으로 한다. 이 조건을 만족하지 않는 매장은 출력에 포함되지 않는다.

결과적으로 출력되는 것은 두 개의 컬럼을 가진 테이블이다. 'store_cd'와 'avg_amount' 두 개의 컬럼을 가진 테이블이 출력된다. 각 행은 HAVING 절에서 지정한 조건을 만족하는 'receipt' 테이블의 매장에 해당하며, 'avg_amount' 열에는 해당 매장의 평균 거래 금액이 포함된다. 이 코드는 평균 거래금액을 기준으로 다른 매장의 성과를 분석하는 데 유용하다.

 

설명:

"영수증" 테이블에서 ID가 "Z"로 시작하는 고객을 제외한 각 고객이 사용한 총 금액의 평균을 계산하는 SQL 코드입니다.

이 코드는 WITH 절을 사용하여 정의된 공통 테이블 표현식(CTE)으로 시작한다. 이 CTE는 'customer_amount'라는 이름으로 'receive' 테이블의 각 고객의 'customer_id' 열과 'amount' 열의 합계를 구하는 SELECT 문이 포함되어 있으며, WHERE 절은 NOT LIKE 연산자를 사용하여 ID가 'Z'로 시작하는 고객을 필터링하고 있습니다. 시작하는 고객을 필터링하고 있습니다. 결과는 "customer_id" 컬럼으로 그룹화되며, 결과 테이블에는 두 개의 컬럼이 있습니다. "customer_id"와 "sum_amount"(각 고객이 사용한 금액의 합계)입니다.

다음 코드 라인은 "customer_amount" CTE에서 "sum_amount" 컬럼의 평균값을 가져오는 것으로, SELECT 문은 AVG 함수를 사용하여 ID가 "Z"로 시작하지 않는 각 고객이 사용한 총 금액의 평균을 나타내는 "sum_amount" 컬럼의 평균값을 계산합니다. 를 계산합니다.

결과적으로 출력되는 것은 "customer_amount" CTE의 "sum_amount" 열의 평균을 나타내는 하나의 값입니다. 이 코드는 고객의 평균 지출 패턴을 분석하고 데이터에서 이상값이나 비정상적인 패턴을 식별하는 데 유용하다.
 
설명:

ID가 "Z"로 시작하는 고객을 제외하고 "receipt" 테이블의 고객 평균 총액보다 더 많이 사용한 상위 10명의 고객의 "customer_id"와 "sum_amount" 열을 검색하는 SQL 코드입니다.

이 코드는 WITH 절을 사용하여 정의된 공통 테이블 표현식(CTE)으로 시작합니다. 이 CTE는 'customer_amount'라는 이름으로 'receive' 테이블의 각 고객의 'customer_id' 열과 'amount' 열의 합계를 구하는 SELECT 문이 포함되어 있으며, WHERE 절은 NOT LIKE 연산자를 사용하여 ID가 'Z'로 시작하는 고객을 필터링하고 있습니다. 시작하는 고객을 필터링하고 있습니다. 결과는 "customer_id" 컬럼으로 그룹화되며, 결과 테이블에는 두 개의 컬럼이 있습니다. "customer_id"와 "sum_amount"(각 고객이 사용한 금액의 합계)입니다.

다음 코드에서는 "customer_amount" CTE에서 "customer_id"와 "sum_amount" 컬럼을 가져오는데, "sum_amount"가 CTE의 모든 고객에 대해 계산한 평균 "sum_amount" 이상인 고객에 대해서만 가져옵니다. 를 사용합니다. 이는 AVG 함수를 사용하여 평균 'sum_amount'를 계산하고 WHERE 절을 사용하여 'customer_amount' CTE를 필터링하는 하위 쿼리를 사용하여 구현됩니다.

이 쿼리의 결과는 LIMIT 절을 사용하여 상위 10개의 행으로 제한된다.

그 결과 두 개의 컬럼을 가진 테이블이 출력된다. 'customer_id'와 'sum_amount' 두 개의 열을 가진 테이블이 출력된다. 각 행은 ID가 "Z"로 시작하는 고객을 제외하고 "receive" 테이블의 고객 평균 총액보다 더 많은 금액을 사용한 고객에 해당한다. 테이블은 "sum_amount" 컬럼을 기준으로 내림차순으로 정렬되며, 상위 10개의 행만 출력에 포함된다. 이 코드는 고액 쇼핑을 하는 고객을 식별하고 그들의 소비 패턴을 분석하는 데 유용하다.
 
설명:

다음은 "receipt" 테이블과 "store" 테이블의 데이터를 포함하는 결합 테이블에서 처음 10개의 행을 가져오는 SQL 코드이다. 결과 테이블에는 "receive" 테이블의 모든 컬럼과 "store" 테이블의 추가 컬럼 "store_name"이 포함될 것이다.

코드는 가져올 컬럼을 지정하는 SELECT 문으로 시작한다. 이 경우 SELECT 문은 와일드카드(*)를 사용하여 'receipt' 테이블에서 모든 컬럼을 가져온다. 또한 SELECT 문에서는 출력 테이블에 포함된 'store' 테이블의 'store_name' 컬럼을 지정하고 있다.

FROM 구문은 'receipt' 테이블에서 데이터를 가져올 것을 지정하고, JOIN 구문은 'store' 테이블을 'receipt' 테이블에 'store_cd' 컬럼을 결합 조건으로 결합할 것을 지정한다. 이는 "store_cd" 열의 일치하는 값을 기준으로 "receive" 테이블과 "store" 테이블의 행이 하나의 테이블로 결합됨을 의미한다.

결과적으로 출력되는 것은 "receipt" 테이블의 모든 컬럼과 "store" 테이블의 추가 컬럼 "store_name"을 포함하는 테이블이다. 이 테이블은 LIMIT 절을 사용하여 처음 10개의 행으로 제한됩니다. 이 코드는 관련 두 테이블의 데이터를 분석하고 데이터를 하나의 테이블로 결합하여 분석하는 데 편리합니다.
 
설명:

이 코드는 관계형 데이터베이스를 관리하고 쿼리하는 데 사용되는 프로그래밍 언어인 SQL로 작성되었습니다.

이 코드에서는 두 개의 테이블에서 데이터를 선택하고 있습니다. "product"와 "category"이며, "JOIN" 키워드를 사용하여 "category_small_cd" 컬럼의 값이 일치하는 두 테이블의 행을 결합하고 있습니다. 이렇게 하면 두 테이블의 컬럼을 포함하는 새로운 테이블이 생성된다.

'SELECT' 키워드는 출력에 포함할 컬럼을 선택하는 데 사용된다. 이 경우 'product' 테이블의 모든 컬럼('p.*' 구문으로 지정)과 'category' 테이블의 'category_small_name' 컬럼이 선택된다.

'LIMIT' 키워드는 출력을 처음 10줄로 제한한다. 이는 대규모 데이터 세트를 다룰 때 쿼리를 빠르게 테스트하거나 데이터 샘플을 가져오는 데 유용하다.

즉, 이 코드는 'product' 테이블과 'category' 테이블을 결합하여 'category_small_cd' 값이 일치하는 처음 10개의 행을 반환하고, 'product' 테이블의 모든 열과 'category' 테이블의 'category_small_name' 열을 포함한 'product' 테이블의 모든 열을 반환한다. small_name' 열을 포함하게 된다.
 
설명:

이 코드도 SQL로 작성되었으며 이전 코드보다 조금 더 복잡하다. 이 코드는 세 개의 테이블에서 데이터를 선택한다." receive", "customer", "customer_amount"의 3개 테이블에서 데이터를 선택합니다.

이 코드에서는 "WITH" 절을 사용하여 두 개의 하위 쿼리를 정의하고 있다. 'customer_amount'와 'customer_data'입니다.

'customer_amount' 서브쿼리는 'SUM' 함수를 사용하여 'customer_id' 별로 'recipate' 테이블의 'amount' 열을 집계하고 그 결과에 'sum_amount'라는 별칭을 부여한다. 이 하위 쿼리는 두 개의 컬럼을 포함하는 새로운 테이블을 생성한다. 'customer_id'와 'sum_amount' 두 개의 컬럼을 포함하는 새로운 테이블이 생성됩니다.

'customer_data' 하위 쿼리는 'customer' 테이블에서 'gender_cd'가 '1'과 같고 'customer_id'가 문자 'Z'로 시작하지 않는 모든 행을 선택한다. 이 하위 쿼리는 하나의 컬럼을 포함하는 새로운 테이블을 생성한다. 'customer_id'를 포함하는 새 테이블을 생성한다.

마지막 쿼리는 'LEFT OUTER JOIN' 연산으로 'customer_data' 테이블과 'customer_amount' 테이블을 결합한다. "customer_data" 테이블의 모든 행과 "customer_amount" 테이블에 일치하는 행이 있으면 이를 반환하고, "customer_amount" 테이블에 일치하는 행이 없으면 "COALESCE" 함수를 사용하여 "sum_amount" 값을 0으로 설정한다. amount' 값을 0으로 대체한다.

SELECT 구문은 출력에 포함할 두 개의 컬럼을 선택한다. 'customer_data' 테이블의 'customer_id'와 'customer_amount' 테이블의 'COALESCE(a.sum_amount, 0)'('customer_amount'와 일치하는 행이 없으면 0) 'LIMIT' 구문은 출력을 처음 10개의 행으로 제한한다. 10행으로 제한한다.

즉, 이 코드는 'customer_id'가 'Z'로 시작하지 않는 남성 고객에 대해 'customer_data' 테이블의 처음 10개의 행과 해당 영수증 합계(또는 영수증이 없는 경우 0)를 반환한다.
 
설명:

이 코드도 SQL로 작성되었으며 이전 코드보다 조금 더 복잡하다. "receipt" 테이블에서 데이터를 선택하고 3개의 하위 쿼리를 생성합니다. 'customer_data', 'customer_days', 'customer_amount'입니다.

customer_data 하위 쿼리는 'customer_id'가 'Z'로 시작하지 않는 'receive' 테이블의 행을 선택하고 세 개의 컬럼에 별칭을 부여한다." customer_id", "sales_ymd", "amount"의 세 열에 별칭을 부여한다. 이 하위 쿼리는 3개의 컬럼을 포함하는 새로운 테이블을 생성한다. 'customer_id', 'sales_ymd', 'amount' 3개의 컬럼을 포함하는 새 테이블이 생성된다.

customer_days 서브쿼리는 'customer_data' 서브쿼리의 'sales_ymd' 컬럼을 'COUNT(DISTINCT sales_ymd)' 함수를 사용하여 'customer_id' 별로 집계하고, 그 결과에 'come_days'라는 별칭을 붙인다. 붙입니다. 그리고 결과를 "come_days"로 내림차순으로 정렬하여 출력을 상위 20개 행으로 제한합니다. 이 하위 쿼리는 두 개의 컬럼을 포함하는 새로운 테이블을 생성합니다. "customer_id"와 "come_days" 두 개의 컬럼을 포함하는 새 테이블을 생성합니다.

'customer_amount' 하위 쿼리는 'customer_data' 하위 쿼리의 'amount' 컬럼을 'SUM' 함수를 사용하여 'customer_id' 별로 집계하고 그 결과에 'buy_amount'라는 별칭을 부여한다. 그리고 결과를 "buy_amount"로 내림차순으로 정렬하여 출력을 상위 20개 행으로 제한합니다. 이 하위 쿼리는 두 개의 컬럼을 포함하는 새로운 테이블을 생성한다. "customer_id"와 "buy_amount" 두 개의 컬럼을 포함하는 새 테이블이 생성됩니다.

마지막 쿼리는 "FULL OUTER JOIN" 연산을 사용하여 "customer_days" 테이블과 "customer_amount" 테이블을 결합한다. 두 테이블의 모든 행, 두 테이블의 일치하는 행, 일치하지 않는 경우 NULL 값을 반환하고, "COALESCE" 함수를 사용하여 "customer_id"의 NULL 값을 다른 테이블의 해당 값으로 바꾼다.

SELECT 구문은 출력에 포함할 3개의 컬럼을 선택한다." COALESCE(d.customer_id, a.customer_id)"에서 customer_id를, "customer_days" 테이블에서 "d.come_days"를, "customer_amount"에서 "a.buy_amount"를 가져오는 것이다.

즉, 이 코드에서는 'come_days'(=방문일수가 가장 많은 상위 20명의 고객과 'buy_amount'(=매장에서 사용한 총액)가 가장 많은 상위 20명의 고객이 customer_id와 함께 반환됩니다. 고객이 두 테이블에 모두 나타나는 경우, 출력에는 한 번만 나타납니다.
 
설명:

이 SQL 코드는 "store" 테이블과 "product" 테이블 간의 데카르트 곱을 수행하여 생성된 결과 집합의 행 개수를 구한다.

코드는 COUNT 함수를 지정한 SELECT 문으로 시작하며, 카운트할 값은 '1', 즉 행 수를 카운트하는 것을 의미한다.

FROM 절에서는 쿼리에서 사용할 두 개의 테이블, "store"와 "product"를 지정하고 있다. 하지만 두 테이블을 어떤 매칭 조건에 따라 결합하는 것이 아니라 CROSS JOIN 키워드가 사용되었습니다. 즉, "store" 테이블의 각 행과 "product" 테이블의 각 행이 짝을 이루어 데카르트 곱이 된다.

결과적으로 출력되는 것은 데카르트 곱의 행 수 개수를 포함하는 하나의 열을 가진 하나의 행이 된다. 이 개수는 "store" 테이블의 행 수와 "product" 테이블의 행 수를 곱한 것이다. 이 유형의 쿼리는 일반적으로 두 개 이상의 테이블에서 얻을 수 있는 데이터 조합 가능성의 총 수를 계산하는 데 사용된다.

 

 

Comment