본문 바로가기

프로그래머스/코딩테스트 연습28

SQL 나이 정보가 없는 회원 수 구하기 WHERE 절로 필터링된 레코드를 세기 위해 COUNT(*)을 사용했다. AGE가 NULL인 레코드를 필터링 하기 위해 AGE IN NULL 사용했다. SELECT COUNT(*) AS USERS from USER_INFO WHERE 1=1 AND AGE IS NULL 2024. 3. 7.
SQL DATETIME에서 DATE로 형 변환 ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회해야 합니다. ANUMAL_ID, NAME, 날짜 로 출력하기 위해 SELECT문에서 조작했다. %Y-%m-%d , Y를 제외하고 소문자로 사용한 이유는 %Y-%M-%D 를 사용하게 되면 2024-march-7th 방식으로 출력하기에 소문자를 사용했다. 정렬은 문제에서 요구하지 않았기에 진행하지 않았다. 정답코드 SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, ('%Y-%m-%d')) AS '날짜' FROM ANIMAL_INS 2024. 3. 7.
sql 가격이 제일 비싼 식품의 정보 출력하기 FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성해주세요. 출력의 컬럼이 fOOD_PRODUCT 테이블의 모든 컬럼이기에 SELECT * 사용했다. 내림차순으로 정렬 후 1개 출력하기 위해 ORDER BY { } DESC LIMIT 1 사용했다. SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC LIMIT 1 2024. 3. 7.
sql 오랜 기간 보호한 동물(1) 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. 입양을 가지 못한 동물의 NAME, DATETIME을 조회하기 위해 select에 ANIMAL_INS를 사용했다 ANIAML_INS left join ANIMAL_OUTS 를 하면 ANIMAL_INS 테이블에만 있는 ANIMAL_ID (입양을 가지 못한 동물의 ID) 가 ANIMAL_OUTS 테이블에서는 존재할수가 없다. ID 기준으로 left join을 했을 때 입양을 가지 못한 동물의 ID의 레코드에 NULL값이 존재할 것이다. ANYMAL_TYPE, NAME, SEX_UPON_OUTCOME 컬럼 같은 경우에는 중복된 값들이 .. 2024. 3. 6.
sql NULL 처리하기 입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요. 문제 카테고리 상 isnull을 사용했어야 할 것 같은데 sql 미숙련 이슈로 coalesce로 대체했다. Name 컬럼에서 Null이 발견되면 No name으로 치환시키기 위해 Coalesce 사용했다. isnull로 해결하는 방법 아시는 분은 댓글로 공유 부탁드립니다. SELECT ANIMAL_TYPE, coalesce(Name, Null, 'No name'), SEX_UPON_INTAKE from ANIMAL_INS 2024. 3. 4.
sql 이름에 el이 들어가는 동물 찾기 보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다. 할머니가 기르던 개 를 찾기 위해 ANIMAL_TYPE = 'Dog' 를 이름에 EL이 들어가는 이름을 찾기 위해 like '%EL%' 을 사용했다. 대소문자를 구분하지 않는다고 하여 select ANIMAL_ID, upper(NAME)을 해봤는데 실패가 뜨고 NAME으로 진행하니 통과했다. 이유는 잘 모르겠다... db별로 like 함수를 쓸 때 대소문자를 고려 .. 2024. 3. 4.
sql 동명 동물 수 찾기 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요. group by 에 대해 잘 몰라서 조금 헤맸다. 이름이 없는 동물, 결측치를 날리기 위해 is not null을 사용했다. 유니크한 값들로 조회하기 위해 group by를 사용하고 having으로 이들을 합친 후 count 하여 한번만 나온 이름들을 날리기 위해 >1 을 했다. group by를 사용하면 정렬까지 함께 해준다고는 하는데 DB마다 다를것이고 디폴트값이 다를수도 있을 것 같아 order by까지 사용했다. SELECT NAME, COUNT(NAME) from ANIMAL_INS where.. 2024. 3. 4.
sql 상위 n개 레코드 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요. 이름을 조회하기 위해 select name 보호소에 들어온 순서대로 정렬하기 위해 order by 사용했다. 가장 먼저 들어온 동물을 찾기 위해서는 오름차순으로 정렬하는것이 낫기에 asc 생략했다. 그리고 가장 먼저 들어온 동물은 한마리기에 limit 1 사용했다. SELECT NAME from ANIMAL_INS order by DATETIME limit 1 2024. 3. 4.
sql 아픈동물 찾기 동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요. 아이디와 이름을 조회하기 위해 id, name 컬럼을 select 했다. 최근 배운 where 작성 국룰을 사용해서 작성했다. 아픈 동물의 기준은 INTAKE_CONDITION이 Sick 인 경우를 뜻함 이라는 주석을 참고했다. 아이디 순으로 조회하기 위해 order by 사용했다. 결과는 오름차순이어서 asc를 생략해도 되었지만 혹시 몰라 적었다. 참고로 내림차순일 때는 desc를 사용하면 된다. 정답 코드 SELECT ANIMAL_ID, NAME from ANIMAL_INS where 1=1 and INTAKE_CONDITION = 'Sick' order by ANI.. 2024. 3. 4.