SQL

[1204 TIL]sql 코드카타(ifnull,where)

sjy0074 2024. 12. 4. 21:30

문제

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.



-- 코드를 입력하세요
SELECT pt_name,pt_no,gend_cd,age,
       case when tlno is null then 'none' else tlno end tlno
from patient
order by age desc, pt_name asc

1차시도 

 

-- 코드를 입력하세요
SELECT pt_name,pt_no,gend_cd,age,
       ifnull(tlno,'NONE') as tlno
from patient
where age <= 12 and gend_cd = 'W'
order by age desc, pt_name asc

따옴표 안에를 소문자가 아닌 대문자로 적어줘야함.. 그리고 case when 구문으로 하면 오류가 나므로 ifnull 구문을 사용해야 한다. 

ifnull(컬럼명,'') 


문제

CAR_RENTAL_COMPANY_CAR 테이블에서 '통풍시트', '열선시트', '가죽시트' 중 하나 이상의 옵션이 포함된 자동차가 자동차 종류 별로 몇 대인지 출력하는 SQL문을 작성해주세요. 이때 자동차 수에 대한 컬럼명은 CARS로 지정하고, 결과는 자동차 종류를 기준으로 오름차순 정렬해주세요.

 

-- 코드를 입력하세요
SELECT car_type, count(*) as cars
from car_rental_company_car
where options in ('통풍시트', '열선시트', '가죽시트')
order by car_type asc

1차 시도 

in 사용하려 했으나 또는으로 3가지를 묶어서 질문해야 하므로 오류가 났다.

또한 그룹핑하지 않아서 이상한 결과가 나왔다

 

-- 코드를 입력하세요
SELECT car_type, count(*) as cars
from car_rental_company_car
where options like '%통풍시트%' or options like '%열선시트%' or options like '%가죽시트%'
group by car_type
order by car_type asc

where 조건안에서 여러가지 조건을 넣으려면 ~는~여야한다 모두 빼먹지말고 넣어야함 

예를들어 

where options like '%통풍시트%' or  '%열선시트%' or  '%가죽시트%'

이런식으로 작성하면 오류!

 


디비버에서 쿼리 작성한 것을 실행시킨 후 그 결과값을 csv파일로 내보내기 해서 엑셀에서 그 표를 가지고 차트를 만드는 작업도 해보았다.

데이터를 월별로 그룹핑, 멤버십 타입별로 그룹핑해보면서 차트를 다르게도 만들어보았다.