본문 바로가기

DataBase/SQL Queries

(15)
[프로그래머스] JOIN - 있었는데요 없었습니다 / USING 문제 풀이 1 SELECT A.ANIMAL_ID, B.NAME FROM ANIMAL_INS A, ANIMAL_OUTS B WHERE A.DATETIME > B.DATETIME AND A.ANIMAL_ID = B.ANIMAL_ID ORDER BY A.DATETIME WHERE절 비교 연산자 (>) 와 논리 연산자 (AND)를 사용한 풀이 풀이 2 SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_INS A JOIN ANIMAL_OUTS B ON A.DATETIME > B.DATETIME AND A.ANIMAL_ID = B.ANIMAL_ID ORDER BY A.DATETIME JOIN과 ON을 이용하여 푼 풀이 풀이 3 SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL..
[프로그래머스]JOIN - 없어진 기록 찾기 / LEFTJOIN, 서브쿼리(Subqueries) 문제 풀이 1 SELECT ANIMAL_ID, NAME FROM ANIMAL_OUTS WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_INS) WHERE 절 서브 쿼리를 사용한 풀이이다. 개인적으로 JOIN을 이용한 풀이보다 더 간단하다고 생각했다! 서브 쿼리(Subqueries) 서브 쿼리란 하나의 질의문 내부에 하나 이상의 다른 질의문이 포함되어 그 결과를 이용하거나, 그 결과와 연관된 자료를 출력하기 위해 사용하는 질의문을 의미한다. From 절에 사용되는 서브 쿼리를 인라인 뷰(inline View)라고 하며 Where 절에 사용되는 서브 쿼리를 중첩 서브 쿼리(Nested/Correlated Subquery)라고 한다. 풀이 2 (JOIN) SELE..
[프로그래머스] IS NULL, IS NOT NULL, IF NULL 문제 1 이름이 없는 동물의 아이디 구하기 풀이 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL 문제 2 이름이 있는 동물의 아이디 구하기 풀이 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL 문제 3 입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요. 풀이 SELECT ANIMAL_TYPE, IFNULL(NAME, "No name"), SEX_UPON_INTAKE FROM ANIMAL_..
[프로그래머스] GROUP BY - 입양 시각 구하기(2) / 매 시간대별 통계, JOIN, IFNULL 문제 풀이 SELECT T1.HOURS AS HOUR, IFNULL(T2.COUNT,0) AS COUNT FROM (SELECT @N := @N + 1 AS HOURS FROM ANIMAL_OUTS, (SELECT @N := -1 FROM DUAL) NN LIMIT 24 )T1 LEFT JOIN (SELECT HOUR(DATETIME) AS HOUR, COUNT(*)AS COUNT FROM ANIMAL_OUTS WHERE HOUR(DATETIME) BETWEEN '0' AND '24' -- 없으면 오류남! GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME))T2 ON T1.HOURS = T2.HOUR 해결 과정 1. 0~23까지 증가하는 컬럼(테이블에서의 각 열에 해당)..
[프로그래머스] GROUP BY - 입양 시각 구하기(1) / 통계 유형별 조회, BETWEEN 문제 풀이 SELECT HOUR(DATETIME) AS HOUR, COUNT(DATETIME) AS COUNT FROM ANIMAL_OUTS WHERE HOUR(DATETIME) BETWEEN '9' AND '19' GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME) ASC HOUR -시간을 알려주는 문법 (0 ~ 23) select hour('12:30:05'); 결과 : 10 BETWEEN... AND... -출력하고 싶은 데이터의 범위를 정하는 문법 SELECT * FROM [테이블명] WHERE [칼럼명] BETWEEN [조건 1] AND [조건 2] https://jang8584.tistory.com/7 [mysql]날짜 관련 함수 모음 [mysql-함수]날짜 ..
[프로그래머스]GROUP BY - 동명 동물 수 찾기 문제 풀이 SELECT NAME, COUNT(*) AS COUNT FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >=2 ORDER BY NAME
[프로그래머스]GROUP BY - 고양이와 개는 몇 마리 있을까 문제 풀이 SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE
[프로그래머스]SUM, MAX, MIN - 중복값 제거 / DISTINCT 문제 풀이 SELECT count(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL DISTINCT연산자를 이용하면 중복 없는 데이터를 구할 수 있다.