NULL이 아닌 것을 찾아 중복을 제외하고 갯수를 조회하는 문제이다.

COUNT를 이용하여 풀었으며 중복제거는 DISTINCT를 이용하여 풀었다.

다만 순서를 조심해야 했으며 SELECT 한번에 하려했으나 실패했다.

SELECT COUNT(*) FROM (SELECT DISTINCT NAME FROM ANIMAL_INS WHERE NAME IS NOT NULL);

 

가장 최근에 들어온 DATETIME을 찾는 문제이다.

처음엔 ORDER BY와 ROWNUM = 1로 풀었다.

하지만 이상해서 찾아보니 집계함수를 이용하여 푸는 문제였다.

MAX(), MIN(), SUM(), AVG(), COUNT() 를 찾아봤으며 MAX()로 풀었다.

SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS;

모든 칼럼을 조회하는 문제이다.

* 를 사용하여 조회하면 된다.

SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC;

모두 풀어봤던 조건이고, NULL이면 'N'을 출력해라. 는 문제였다.

찾아보니 조건을 걸어 하는 방법이 있었다.


1. DECODE

SELECT DECODE(A, B, C, D)

DECODE()를 이용하여 A == B이면 C 다르면 D를 출력하는 함수이다.

C, D, E, F, G, H ....... 길게 쓸수 있으며 B C로 끊어 switch 처럼 사용할 수 있다.


2. CASE

SELECT CASE 비교할 어트리뷰트 WHEN 조건1 THEN true일때 결과
 WHEN 조건2 THEN true 일때 결과
 ELSE 그 외의 결과 
 END

이때의 조건은 < , > ... 연산이 가능하며 이상 이하 구분할 때 사용하면 편할것 같다.

본인은 DECODE를 사용하여 풀었다.

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, 
 DECODE(FREEZER_YN, null, 'N', FREEZER_YN) FROM FOOD_WAREHOUSE
 WHERE ADDRESS LIKE '경기도%' ORDER BY WAREHOUSE_ID ASC;

일정 문자열을 포함하는 조건을 걸어 조회하는 문제이다.

ID, 이름, 주소를 조회하며

강원도에 위치한 공장을 찾는것이므로 ADDRESS 에 '강원도' 가 있으면 된다.

따라서 LIKE를 사용하여 '%강원도%'로 강원도를 포함한 주소를 조건으로 걸어 조회하면 된다.

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY 
 WHERE ADDRESS LIKE '%강원도%' ORDER BY FACTORY_ID ASC;

+ Recent posts