Oracle(4)
-
프로그래머스 SQL - 5월 식품들의 총매출 조회하기
현재 학습중인 INNER JOIN과 필터링을 활용하여 푸는 문제이다. FOOD_PRODUCT 테이블에는 PRODUCT의 정보가 들어있고 FOOD_ORDER 테이블에는 생산정보가 들어있다. FOOD_ORDER 테이블에서 PRODUCT_ID별로 그룹을 생성하고 FOOD_ORDER의 AMOUNT와 FOOD_PRODUCT의 PRICE를 곱하게 되면 총량이 됩니다. FOOD_ORDER 테이블에서 생산년도가 22년5월인 제품들을 추려내려면 PRODUCE_DATE에 22-05가 포함된 제품들을 추려내면 됩니다. 그리고 정렬기준을 설정해주면 문제는 해결됩니다. SELECT A.PRODUCT_ID, B.PRODUCT_NAME, SUM(B.PRICE*A.AMOUNT) AS TOTAL_SALES FROM FOOD_ORDER..
2023.02.08 -
WHERE 1=1
WHERE 1=1은 SQL에서 일반적으로 사용되는 구문으로, WHERE절이나 AND절을 작성할 때, 조건을 추가하는데 유용합니다. 하지만, 조건절이 없는 쿼리에 대해서도 WHERE 1=1을 사용하는 경우가 있습니다. 이렇게 하는 이유는 쿼리를 동적으로 생성하는 코드에서 쉽게 조건을 추가하고 삭제할 수 있기 때문입니다. 예를 들어, 다음과 같은 동적 쿼리를 작성할 경우를 생각해보겠습니다. SELECT * FROM customers WHERE 1=1 이 쿼리는 WHERE 절이 있지만, 1=1 조건이 무조건 참이므로, 모든 레코드를 반환합니다. 이후 코드에서 WHERE 절에 조건을 추가하거나 삭제할 때, AND절을 사용하여 각 조건을 추가할 수 있습니다. 예를 들어, 다음과 같이 작성할 수 있습니다. -- 이..
2023.02.07 -
NVL
NVL은 해당칼럼이 NULL값인 경우 특정값을 출력하고싶을때 사용한다. NVL2는 NULL이 아닌경우 특정값으로 출력하고 싶을 때 사용한다. NVL(CON_NUM,0) -> CON_NUM컬럼이 NULL일 경우 전부 1을 넣어준다 NVL2(CON_NUM,100) -> CON_NUM컬럼이 NULL이 아닐 경우 전부 100을 넣어준다
2023.02.07 -
DECODE
Oracle 코드를 확인하던 중 처음보는 DECODE라는 녀석을 접했다. 평소 MySQL만을 사용하다가 Oracle을 해보니 더 다양한 문법들이 존재했다. DECODE는 IF ELSE구문을 의미한다. 표준 SQL은 아니지만 유용하게 쓰이는거같다. DECODE(컬롬,조건1,결과1,조건2,결과2,조건3,결과3.......,결과N) 제일 마지막의 결과N은 else라고 보면 되고 나머지는 전부 else if와 같은 역할을 한다.
2023.02.07