일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- spring framework
- Dependency Injection
- 컨테이너
- java
- XML
- @test
- java spring
- Framework
- JdbcTemplate
- Spring JDBC
- Ubunt
- myBatis
- @JUnit
- JDBC TEMPLATE
- spring aop
- Linux
- SpringJDBC
- 리눅스
- Di
- AOP
- @AspectJ
- Spring Boot
- 프로퍼티
- @Spring-Test
- unix
- spring
- STS
- pointcut
- 마이바티스
- POJO
- Today
- Total
목록PostgreSQL/조인과 집계 데이터 (19)
개키우는개발자 : )
RENTAL과 CUSTOMER 테이블을 이용하여 현재까지 가장 많이 RENTAL을 한 고객의 고객ID, 렌탈순위, 누적렌탈 횟수, 이름까지 출력하세요. SELECT * FROM RENTAL; SELECT * FROM CUSTOMER; - MAX , WHERE SELECT ROW_NUMBER() OVER ( ORDER BY COUNT(A.RENTAL_ID) DESC) AS RENTAL_RANK , MAX(B.FIRST_NAME) AS FIRST_NAME, MAX(B.LAST_NAME) AS LAST_NAME, A.CUSTOMER_ID, COUNT(*) RENTAL_COUNT FROM RENTAL A, CUSTOMER B WHERE A.CUSTOMER_ID = B.CUSTOMER_ID GROUP BY A.C..
RENTAL 테이블을 이용하여 연, 연월, 연월일, 전체 각각의 기준으로 RENTAL_ID 기준 렌탈이 일어난 횟수를 출력하세요. (전체 데이터 기준으로 모든 행을 출력합니다) SELECT * FROM RENTAL; - 연별 조회 SELECT TO_CHAR(RENTAL_DATE, 'YYYY'), COUNT(*) FROM RENTAL GROUP BY TO_CHAR(RENTAL_DATE, 'YYYY') ORDER BY TO_CHAR(RENTAL_DATE, 'YYYY') - 연월 조회 SELECT TO_CHAR(RENTAL_DATE, 'YYYYMM'), COUNT(*) FROM RENTAL GROUP BY TO_CHAR(RENTAL_DATE, 'YYYYMM') ORDER BY TO_CHAR(RENTAL_DAT..
실습 테이블 만들기 https://dog-developers.tistory.com/154 LAG,LEAD 함수 특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 이전 행의 값 혹은 다음 행의 값을 구합니다. 실습 LAG 1. PRODUCT 테이블과 PRODUCT_GROUP 테이블을 GROUP_ID 기준으로 INNER JOIN 합니다. 2. PRICE의 이전 행의 값을 구합니다. 3. 현재 행에서 이전행의 PRICE값을 뺍니다. 4. GROUP_NAME 컬럼 기준으로 PRICE컬럼으로 정렬 합니다. SELECT A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE, LAG(A.PRICE, 1) OVER (PARTITION BY B.GROUP_NAME ORDER BY A.P..
실습 테이블 만들기 https://dog-developers.tistory.com/154 ROW_NUMBER, RANK, DENSE_RANK 특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 특정 컬럼의 순위를 구하는 함수입니다. 실습 ROW_NUMBER - 집합 내의 순위를 GROUP_NAME 컬럼 기준으로 구하고 GROUP_NAME 기준의 각 순위는 PRICE 컬럼 기준으로 정렬 합니다. SELECT A.PRODUCT_NAME, B.GROUP_NAME, A.PRICE, ROW_NUMBER () OVER (PARTITION BY B.GROUP_NAME ORDER BY A.PRICE) FROM PRODUCT A INNER JOIN PRODUCT_GROUP B ON (A.GROUP_ID = B.GR..
실습 테이블 만들기 https://dog-developers.tistory.com/154 AVG 란? 분석함수 AVG() 부터 본격적으로 분석함수를 알아 볼 수 있습니다. 기본문법 - 사용하고자 하는 분석함수를 쓰고 대상 컬럼을 기재 후 PARTITION BY에서 값을 구하는 기준 컬럼을 작성 후 ORDER BY에서 정렬 컬럼을 기재합니다. SELECT C1, 분석함수(C2,C3,...) OVER(PARTITION BY C4 ORDER BY C5) FROM TABLE_NAME; 실습 - PRODUCT 테이블의 전체 PRICE 평균 구하기. select AVG (PRICE) from PRODUCT; - PRODUCT_GROUP 테이블과 PRODUCT 테이블을 GROUP_ID컬럼 기준으로 INNER JOIN..
실습 테이블 만들기 https://dog-developers.tistory.com/154 분석 함수란? 특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 합계 및 카운트 등을 계산할 수 있는 함수 이다. 실습 - PRODUCT 테이블의 데이터 개수를 조회 SELECT COUNT(*) FROM PRODUCT; 데이터의 리스트의 개수를 조회한다 - PRODUCT 테이블의 데이터와 개수를 같이 조회 SELECT COUNT(*) OVER(), A.* FROM PRODUCT A; 모든 개수와 데이터를 조회합니다.
실습준비 1 PRODUCT_GROUP 테이블 생성 CREATE TABLE PRODUCT_GROUP ( GROUP_ID SERIAL PRIMARY key, GROUP_NAME VARCHAR (255) NOT NULL ) PRODUCT_GROUP 데이터 저장 INSERT INTO PRODUCT_GROUP (GROUP_NAME) VALUES ('SMARTPHONE'), ('LAPTOP'), ('TABLET') commit; PRODUCT 테이블 만들기 CREATE TABLE PRODUCT ( PRODUCT_ID SERIAL PRIMARY KEY, PRODUCT_NAME VARCHAR(255) NOT NULL, PRICE DECIMAL (11,2), GROUP_ID INT NOT NULL, FOREIGN KEY..
CUBE 란? 지정된 GROUPING 컬럼의 다차원 소계를 생성하는데 사용된다. 간단한 문법으로 다차원 소계를 출력할 수 있다. 기본문법 - CUBE절에서 다차원 소계를 할 열을 지정한다. (지정한 그룹의 모든 경우에 수에 대한 소계와 총계를 구한다.) SELECT C1,C2,C3, 집계함수(C4) FROM TABLE_NAME GROUP BY CUBE (C1, C2, C3); - 특정 컬럼만 분리,선택하여 CUBE 지정을 할 수 있다. SELECT C1,C2,C3, 집계함수(C4) FROM TABLE_NAME GROUP BY C1, CUBE (C2, C3); CUBE 절은 GROUPING SETS 절로 표현하면 총 8개의 소계가 발생합니다. CUBE(C1,C2,C3) -> GROUPING SETS ( (..
ROLL UP 이란? 지정된 GROUPING 컬럼의 소계를 생성하는데 사용된다. 간단한 문법으로 다양한 소계를 출력합니다. 기본문법 소계 「명사」 : 전체가 아닌 어느 한 부분만을 셈한 합계. - 소계를 생성할 컬럼을 지정한 후 순서에 따라 결과값이 달라질 수 있다. (제일 앞에 놓인 것에 소계를 구함) SELECT C1,C2,C3, 집계함수(C4) FROM TABLE_NAME GROUP BY ROLLUP (C1,C2,C3); - 특정 컬럼을 제외한 부분적,선택적 ROLLUP도 가능 합니다. SELECT C1,C2,C3, 집계함수(C4) FROM TABLE_NAME GROUP BY C1 ROLLUP (C2, C3); 실습 - SALES 테이블의 BRAND,SEGMENT 컬럼 기준으로 ROLL UP을 합니..
실습테이블 만들기 https://dog-developers.tistory.com/140 GROUPING SET 이란? 여러 개의 UNION ALL을 이용한 SQL과 같은 결과를 도출할 수 있다. 실습 - SALES 테이블을 BRAND 와 SEGMENT 컬럼 기준으로 GROUP BY 합니다. SELECT BRAND, SEGMENT, SUM (QUANTITY) FROM SALES GROUP BY BRAND, SEGMENT; 일반적인 조회와 값이 별다른 변화가 없습니다. - SALES 테이블을 BRAND 컬럼 기준으로 GROUP BY 합니다. SELECT BRAND, SUM (QUANTITY) FROM SALES GROUP BY BRAND; 그룹화된 BRAND 의 QUANTITY의 합계를 보여줍니다. - SA..
실습테이블 만들기 https://dog-developers.tistory.com/140 HAVING 이란? GROUP BY 절과 함께 HAVING절을 사용하여 GROUP BY의 결과를 특정 조건으로 필터링 하는 기능을 한다. 기본문법 WHERE 절과는 다른건 집계함수의 결과를 가지고 조건을 적용하여 조회합니다. SELECT COLUMN_1, 집계함수(COLUMN_2) FROM TABLE_NAME GROUP BY COLUMN_1 HAVING 조건식; 실습 - PAYMENT 테이블을 CUSTOMER_ID 기준으로 GROUP BY 하고 SUM(AMOUNT) 가 200을 초과하는 값을 조회합니다. SELECT CUSTOMER_ID, SUM(AMOUNT) AS AMOUNT_SUM FROM PAYMENT GROUP..
실습 테이블 만들기 https://dog-developers.tistory.com/140 GROUP BY 란? GROUP BY 절은 SELECT 문에서 반환된 행을 그룹으로 나눈다. 각 그룹에 대한 합계,평균,카운트 등을 계산할 수 있다. 기분문법 GROUP BY 절은 N개의 컬럼을 GROUP BY 하는경우 ,(콤마) 로 구분하며 GROUP BY 절은 FROM 또는 WHERE절 바로 뒤에 작성해야 합니다. SELECT COLUMN_1, 집계함수(COLUMN_2) FROM TABLE_NAME GROUP BY COLUMN_1 실습 PAYMENT 테이블은 payment_id 가 기본키 이기때문에 유일한 값입니다. 하지만 customer_id(1명의 id) 는 여러개의 payment_id 를 가질수 있습니다. ..
실습 테이블 만들기 https://dog-developers.tistory.com/140 NATURAL 조인 이란? 두개의 테이블에서 같은 이름을 가진 컬럼 간의 INNER 조인 집합 결과를 출력한다. SQL문을 보다 짧게 작성할 수 있다. 참고: 실무에선 잘 사용하지 않습니다. 하지만 NATURAL JOIN과 INNER JOIN의 차이로 인해 INNER JOIN을 더 깊게 이해할 수 있습니다. 실습 - PRODUCTS 테이블과 CATEGORIES 테이블을 NATURAL 조인 한다. CATEGORY_ID 를 동일하게 가지고있는 컬럼을 기준으로 INNER 조인 한다. SELECT * FROM PRODUCTS A NATURAL JOIN CATEGORIES B; 장점 - 자동으로 매칭해 코드가 간결해지며 편함..
실습 테이블 만들기 https://dog-developers.tistory.com/140 CROSS 조인 이란? 두개의 테이블의 CATESIAN PRODUCT 연산의 결과를 출력한다. 데이터 복제에 많이 쓰이는 기법이다. 실습 SELECT * FROM CROSS_T1 CROSS JOIN CROSS_T2; CATESIAN PRODUCT 연산의 결과를 출력합니다. 링크 : CATESIAN PRODUCT LABEL 컬럼으로 정렬 SELECT * FROM CROSS_T1 CROSS JOIN CROSS_T2 ORDER BY LABEL; - 같은 표현방법 SELECT * FROM CROSS_T1, CROSS_T2 ORDER BY LABEL; 응용 - LABEL A,B의 SCORE 값을 더하고 B는 -1 을 곱하여 ..
실습 테이블 만들기 https://dog-developers.tistory.com/140 FULL OUTER 조인 이란? INNER,LEFT OUTER,RIGHT OUTER 조인 집합을 모두 출력하는 조인 방식이다. 즉 두 테이블간 출력가능한 모든 데이터를 포함한 집합을 출력한다. 실습 - A와 B의 테이블을 FRUIT 컬럼 기준으로 FULL OUTER 조인 합니다. SELECT A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM BASKET_A A FULL OUTER JOIN BASKET_B B ON A.FRUIT = B.FRUIT; ID_A -> 1,2는 INNER JOIN , 3,4는 LEFT OUTER 조인 , ID_B -> 3,4는 RIGH..
실습 테이블 만들기 https://dog-developers.tistory.com/140 SELF 조인 이란? 같은 테이블 끼리 특정 컬럼을 기준으로 매칭 되는 컬럼을 출력하는 조인이다. 즉 같은 테이블의 데이터를 각각의 집합으로 분류한 후 조인합니다. 실습 - 업체의 직원 조직도의 데이터를 보여주는 테이블 입니다. SELECT * FROM EMPLOYEE; manager_id는 employee_id 의 하위에 포함된 직원이라고 판단 할 수 있습니다. Windy 는 manager_id 가 null이니 최상위 관리자라 할 수 있으며 Ava,Hassan 은 manager_id가 1입니다. 즉 employee_id 1번 보다 하위의 직책 입니다. 이런식으로 조직도 관계를 데이터로 파악이 가능합니다. tree ..
실습 테이블 만들기 https://dog-developers.tistory.com/140 OUTER 조인 이란? 특정 컬럼을 기준으로 매칭된 집합을 출력하지만 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값 만을 출력한다. 실습 - A테이블과 B테이블을 조인하는데 A를 기준집합으로 조인한다. (OUTER 생략 가능) SELECT A.ID AS ID_A, A.FRUIT AS FRUIT_A, B.ID AS ID_B, B.FRUIT AS FRUIT_B FROM BASKET_A A LEFT JOIN BASKET_B B ON A.FRUIT = B.FRUIT 일단 A의 데이터는 모두 가져오며 B는 중복되는 값은 보여주고 중복되는 값이 없으면 NULL로 보여준다. - A의 테이블에만 존재하는 데이..
실습 테이블 만들기 https://dog-developers.tistory.com/140 INNER 조인 이란? 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력한다. INNER 조인은 대표적인 조인의 종류이다. A와 B의 집합 실습 FRUIT 컬럼을 기준으로 A테이블과 B테이블의 데이터를 조회한다. SELECT A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM BASKET_A A INNER JOIN BASKET_B B ON A.FRUIT = B.FRUIT; 서로 중복되는 집합의 데이터를 출력합니다. - CUSTOMER 테이블과 PAYMENT 테이블을 CUSTOMER_ID 기준으로 조인 조회를 합니다. SELECT A.CUSTOMER_ID, A.FI..
조인이란? 2개 이상의 테이블에 있는 정보 중 사용자가 필요한 집합에 맞게 가상의 테이블 처럼 만들어서 결과를 보여주는 것이다. 종류 설명 INNER 조인 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력한다. OUTER 조인 특정 컬럼을 기준으로 매칭된 집합을 출력하지만 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값 만을 출력한다. SELF 조인 동일한 테이블 끼리 의 특정 컬럼을 기준으로 매칭되는 집합을 출력한다. FULL OUTER 조인 INNER, LEFT OUTER, RIGHT OUTER 조인 집합을 모두 출력한다. CROSS 조인 Cartesian Product라고도 하며 조인되는 두 테이블에서 곱집합을 반환한다. NATURAL 조인 특정 테이블의 같은 이름을 가진 컬럼 간..