본문 바로가기

SQL56

[SQL] Function, Procedure, Trigger, View, Package, Index, Synonyms, Cursor Function : 매개변수를 받아 특정 계산(작업)을 수행하고 결과를 반환하는 기능 Procedure : 특정 작업을 위한 쿼리들의 블록(함수와 거의 비슷) 장점 : 1. 하나의 요청으로 여러 SQL문을 실행(네트워크 부하를 줄일 수 있음) 2. 네트워크 소요 시간을 줄여 성능 개선 3. 여러 어플리케이션과 공유 가능(API처럼 제공 가능) 4. 기능 변경이 편함 단점 : 1. 문자나 숫자열 연산에 사용하면 오히려 C, Java보다 느린 성능을 보일 수 있음 2. 유지보수가 어려움(프로시져가 앱의 어디에 사용되는지 확인 어려움) Trigger : 사전적 뜻은 총의 방아쇠로 총의 방아쇠를 당기는 것과 같이 어떤 이벤트의 자동 실행 View : 하나 이상의 테이블에서 원하는 모든 데이터를 선택하여 간단하게.. 2023. 8. 31.
[SQL] 프로시저(PROCEDURE) & 함수(FUNCTION) 프로시저(PROCEDURE) 조회 쿼리 SELECT * FROM USER_SOURCE WHERE TYPE = 'PROCEDURE' AND NAME = '프로시저명' 함수(FUNCTION) 조회 쿼리 SELECT * FROM USER_SOURCE WHERE TYPE = 'FUNCTION' AND NAME = '함수명' 프로시저와 함수의 차이 프로시저(PROCEDURE) : 넓은 의미로는 어떤 업무를 수행하기 위한 절차를 뜻한다. 함수(FUNCTION) : 위의 프로시저의 각 프로세스를 수행하기 위해 필요한 기능들을 함수라 한다. 프로시저(PROCEDURE) 함수(FUNCTION) 특정 작업을 수행 특정 계산을 수행 리턴 값을 가질 수도 안 가질 수도 있음 리턴 값을 반드시 가져야 함 리턴 값을 여러 개 가.. 2023. 7. 28.
[SQL] 프로그래머스 [Level-4] 저자 별 카테고리 별 매출액 집계하기 SELECT A.AUTHOR_ID , B.AUTHOR_NAME , A.CATEGORY , SUM(A.PRICE * C.SALES) AS TOTAL_SALES FROM BOOK A , AUTHOR B , BOOK_SALES C WHERE A.AUTHOR_ID = B.AUTHOR_ID AND A.BOOK_ID = C.BOOK_ID AND DATE_FORMAT(C.SALES_DATE, '%Y-%m') = '2022-01' GROUP BY A.AUTHOR_ID, A.CATEGORY, B.AUTHOR_NAME ORDER BY A.AUTHOR_ID, A.CATEGORY DESC SELECT A.AUTHOR_ID , B.AUTHOR_NAME , A.CATEGORY , SUM(A.PRICE * C.SALES) AS T.. 2022. 12. 25.
[SQL] 프로그래머스 [Level-4] 년, 월, 성별 별 상품 구매 회원 수 구하기 SELECT MST.YEAR , MST.MONTH , MST.GENDER , COUNT(MST.GENDER) AS USERS FROM ( SELECT YEAR(A.SALES_DATE) AS YEAR , MONTH(A.SALES_DATE) AS MONTH , B.GENDER FROM ONLINE_SALE A , USER_INFO B WHERE A.USER_ID = B.USER_ID AND B.GENDER IN (0, 1) GROUP BY YEAR(A.SALES_DATE), MONTH(A.SALES_DATE), B.USER_ID ) MST GROUP BY MST.YEAR, MST.MONTH, MST.GENDER ORDER BY MST.YEAR, MST.MONTH, MST.GENDER SELECT MST.YE.. 2022. 12. 12.
[SQL] 프로그래머스 [Level-4] 5월 식품들의 총매출 조회하기 SELECT A.PRODUCT_ID , B.PRODUCT_NAME , SUM(A.AMOUNT) * B.PRICE AS TOTAL_SALES FROM FOOD_ORDER A , FOOD_PRODUCT B WHERE A.PRODUCT_ID = B.PRODUCT_ID AND DATE_FORMAT(A.PRODUCE_DATE, '%Y-%m') = '2022-05' GROUP BY A.PRODUCT_ID ORDER BY SUM(A.AMOUNT) * B.PRICE DESC, A.PRODUCT_ID SELECT A.PRODUCT_ID , A.PRODUCT_NAME , A.PRICE * B.AMOUNT_SUM AS TOTAL_SALES FROM FOOD_PRODUCT A , ( SELECT PRODUCT_ID, SUM(.. 2022. 12. 12.
[SQL] 해커랭크 Binary Tree Nodes SELECT G.NODE FROM ( SELECT CONCAT(N, ' Root') AS NODE , N FROM BST WHERE P IS NULL UNION ALL SELECT CONCAT(N, ' Inner') AS NODE , N FROM BST WHERE N IN ( SELECT P FROM BST ) AND P IS NOT NULL UNION ALL SELECT CONCAT(N, ' Leaf') AS NODE , N FROM BST WHERE N NOT IN ( SELECT DISTINCT P FROM BST WHERE P IS NOT NULL ) ) G ORDER BY G.N 해커랭크 Binary Tree Nodes SQL 2022. 12. 3.
[SQL] 해커랭크 Ollivander's Inventory SELECT C.ID, B.AGE, A.MIN_COINS_NEEDED, A.POWER FROM (SELECT CODE, MIN(COINS_NEEDED) AS MIN_COINS_NEEDED, POWER FROM WANDS GROUP BY CODE, POWER) A , WANDS_PROPERTY B , WANDS C WHERE A.CODE = B.CODE AND A.CODE = C.CODE AND A.MIN_COINS_NEEDED = C.COINS_NEEDED AND A.POWER = C.POWER AND B.IS_EVIL = 0 ORDER BY A.POWER DESC, B.AGE DESC 해커랭크 Ollivander's Inventory SQL 2022. 12. 3.
[SQL] 해커랭크 15 Days of Learning SQL STEP 1. SUBMISSION_DATE와 ID, NM의 출력은 간단하다. SELECT MST.SUBMISSION_DATE , (SELECT HACKER_ID FROM SUBMISSIONS WHERE SUBMISSION_DATE = MST.SUBMISSION_DATE GROUP BY HACKER_ID ORDER BY COUNT(SUBMISSION_ID) DESC, HACKER_ID LIMIT 1) AS ID , (SELECT NAME FROM HACKERS WHERE HACKER_ID = ID) AS NM FROM (SELECT DISTINCT SUBMISSION_DATE FROM SUBMISSIONS) MST GROUP BY MST.SUBMISSION_DATE STEP 2. 아래 쿼리를 이해하자 SE.. 2022. 12. 3.
[SQL] 해커랭크 SQL Project Planning SET SQL_MODE = ''; SELECT A.START_DATE, B.END_DATE FROM (SELECT START_DATE FROM PROJECTS WHERE START_DATE NOT IN (SELECT END_DATE FROM PROJECTS)) A, (SELECT END_DATE FROM PROJECTS WHERE END_DATE NOT IN (SELECT START_DATE FROM PROJECTS)) B WHERE A.START_DATE < B.END_DATE GROUP BY A.START_DATE ORDER BY DATEDIFF(B.END_DATE, A.START_DATE), A.START_DATE SQL_MODE 초기화 & 조회 SQL_MODE를 확인해보자 SHOW VARIABLE.. 2022. 12. 3.