DB/Postgresql(DB)
-
필터링과 서브쿼리(IN.ALL.ANY)DB/Postgresql(DB) 2023. 11. 28. 19:30
쿼리 예시! 더보기 -- 1. 판매량 상위 3개 음료를 다음과 같이 조회하려 한다. 주어진 두 쿼리를 조합하여 이를 구하시오. -- 메인 쿼리 ( 판매량 상위 3개의 음료 정보) SELECT id AS "ID", name AS "음료명" FROM beverages WHERE id IN ( -- 음료 id 별, 판매량 SELECT beverage_id FROM order_details GROUP BY beverage_id ORDER BY SUM(COUNT) DESC LIMIT 3 ) ; -- 음료 id 별, 판매량 -- 판매량 상위 3개 음료의 판매량 SELECT beverage_id FROM order_details GROUP BY beverage_id ORDER BY SUM(COUNT) DESC LIM..
-
서브쿼리DB/Postgresql(DB) 2023. 11. 28. 18:57
더보기 -- 1. 음료(beverages)의 이름 및 가격과 함께, 가장 비싼 음료와의 가격 차이를 조사하려 한다.주어진 두 쿼리를 조합하여 이를 구하시오. -- (SELECT 절 서브쿼리를 사용할 것SELECT -- outter query(main query) -- 음료명,가격,가격 차이 조회 SELECT name AS "음료명", price AS "가격", price - ( -- 가장 비싼 음료의 가격 (단일값 결과 생성, 1x1열만 가능) SELECT -- Inner query(sub query) MAX(price),123 FROM beverages -- 5800원 ) AS "최대 가격과의 차이" FROM beverages ; -- 2. 주문내역(order_details)로부터 주문 별 음료 개수의..
-
그룹필터링 , 정렬, 조회 개수 지정DB/Postgresql(DB) 2023. 11. 28. 15:59
1. HAVING: 분류된 그룹들중 특정 그룹만 가져옴 2. ORDERBY: ASC(오름차순 정렬), DESC (내림차순 정렬) 3. LIMIT: 가져올 레코드를 제한하는 구문 더보기 -- 36000원 이상인 결제 수단 조회! SELECT ptype AS "결제 수단", -- 복습: GROUP BY는 그룹화된 컬럼만 할수 있다. ROUND(AVG(amount),2) AS" 평균 결제 금액" FROM payments GROUP BY ptype HAVING -- 그룹 필터링: 그룹화된 것들을 조건으로 선별! AVG(amount) >= 36000 ; -- 상품 이름과 가격을 기준으로, 누적 판매정보(판매량, 매출)를 조회 SELECT -- 4 products.name AS "상품명", products.pric..
-
그룹화(Group By 와 집계 함수)DB/Postgresql(DB) 2023. 11. 28. 14:00
- Group By 실습 더보기 -- 결제(payments) 테이블을 결제 방법에 따라 분류하고, 각각의 결제횟수를 조회하시오. SELECT ptype AS "결제방법", COUNT(ptype)AS"결제횟수" FROM payments -- 1 GROUP BY ptype -- 2 ; -- 상품(products) 테이블을 보관타입에 따라 분류하고, 각각의 상품 개수와 평균 가격을 조회 하시오. SELECT -- 3 ptype AS "상품 보관 타입", count(ptype) AS "상품 개수", ROUND(AVG(price),-1) AS "평균가격" FROM -- 1 products GROUP BY -- 2 ptype ; -- 사용자(users)와 주문(orders) 테이블을 조인하고, 사용자 닉네임별 배송..
-
JoinDB/Postgresql(DB) 2023. 11. 28. 00:11
출저: 홍팍 (https://www.youtube.com/@hongpark) 이 블로그 기록은 개인 공부용 기록입니다. - INNER JOIN 예시 모음 더보기 1. 예시 사진#1에 달린 모든 댓글내용 과 작성자 닉네임을 조회하시오 SELECT comments.body, -- 댓글 내용 users.nickname -- 작성자 네임 FROM comments Join users on -- users를 붙임 users.id = comments.user_id WHERE comments.photo_id = 1 ; 2. 사진#5의 파일명과 사진 게시자 닉네임을 조회하시오. SELECT photos.filename, users.nickname FROM photos Join users ON users.id = phot..
-
primary key & Foreign KeyDB/Postgresql(DB) 2023. 11. 27. 17:05
1. Primary Key - FK - 코드 정리 더보기 // 회원 조회 SELECT * FROM USERS; -- users 테이블 CREATE TABLE users( id SERIAL PRIMARY KEY, -- PK 선언(SERIAL:자동 생성 타입) nickname VARCHAR(50), email VARCHAR(100) ); -- users 레코드 등록 INSERT INTO users(nickname,email) VALUES ('cloudstudying_kr', 'mail@cloudstudying.kr'), ('hongpark_cs', 'sehongpark@cloudstudying.kr'), ('haesamq', 'haesamq@naver.com') ; -- photos 테이블 생성 CREATE..
-
시간값 필터필(타임스탬프,extract,to_char)DB/Postgresql(DB) 2023. 11. 27. 16:13
더보기 -- 전체 조회 SELECT * FROM transactions ; -- A. 거래 내역의 총합은? SELECT SUM(amount) -- amunt 컬럼의 총합을 계산 FROM transactions ; -- B. 최대 거래 금액과 최저 거래 금액은? SELECT MAX(amount), -- 최대 거래 금액 min(amount) -- 최소 거래 금액 FROM transactions ; -- C. “Google”과 거래한 총 횟수는? SELECT -- 3 COUNT(*) FROM -- 1 transactions WHERE msg = 'Google' -- 2 ; -- D. 거래 내역의 평균 금액은? SELECT ROUND(AVG(amount),2) -- 평균값 계산 후, 소수점 이하 둘째자리에서 반..
-
WHERE 절DB/Postgresql(DB) 2023. 11. 27. 12:11
예시 더보기 -- 학생 테이블 생성 CREATE TABLE students ( id INTEGER, -- 학생 id nickname VARCHAR(50), -- 닉네임 math_score INTEGER, -- 수학 성적 english_score INTEGER, -- 영어 성적 programming_score INTEGER -- 프로그래밍 성적 ); -- 학생 레코드 추가 INSERT INTO students(id, nickname, math_score, english_score, programming_score) VALUES (1, 'Sparkles', 98, 96, 93), (2, 'Soldier', 82, 66, 98), (3, 'Lapooheart', 84, 70, 82), (4, 'Slick', ..