ANIMAL_ID를 역순으로 조회하기 위해 order by ANIMAL_ID desc를 사용하였다.order by의 기본값은 오름차순(asc)이므로 asc는 생략 가능하지만, 내림차순으로 정렬하기 위해서는 desc를 입력해야 한다.
INTAKE_CONDITION이 Sick인 경우 아픈 동물이므로 where 절을 사용하여 아픈 동물을 골라내고, order by 절을 사용하여 아이디 순으로 조회한다.
젊은 동물 = INTAKE_CONDITION이 Aged가 아닌 경우를 뜻하므로 where 절을 사용하여 젊은 동물을 골라내고 order by 절을 사용하여 아이디 순으로 정렬하였다.같지 않음을 표현하는 연산자 !=, ^=, <>
select 절에서 조회가 필요한 열의 이름을 나열한다.만약 모든 열의 내용을 조회하기 위해서는 \* 를 입력하면 된다.그렇지 않으면 모든 열의 이름을 나열해야 한다.
이름을 기준으로 먼저 정렬하고, 이름이 같은 동물에 한하여 보호 시작일을 기준으로 정렬하므로 order by 절을 다음과 같이 사용하였다.
보호소에 가장 먼저 들어온 동물의 이름만 조회하므로 select 절에서 NAME 열만 선택하였고order by 절을 사용하여 보호 시작일을 기준으로 오름차순 정렬 후 limit 1을 사용하여 가장 먼저 들어온 동물만 나오도록 하였다.
가장 최근에 들어온 동물이 언제 들어왔는지 조회해야하므로DATETIME을 조회한다.가장 최근에 들어온 동물을 찾으려면 DATETIME을 기준으로 order by 절을 이용하여 내림차순(desc)으로 정렬하여 상위 1개의 값만 보여주도록 limit 1을 설정한다.
가장 먼저 들어온 동물이 언제 들어왔는지 조회해아하므로order by 절을 사용하여 오름차순(asc)으로 정렬 후 상위 1개의 값만 보여주도록 limit을 건다.
동물의 수를 세기 위해 count 함수를 적용한다.
name 열에 있는 데이터의 개수를 세면 되므로 count 함수를 이용하되 중복되는 이름은 하나로 치므로 distinct를 붙여준다.distinct : 중복되는 것을 하나로 친다.
이름이 없는 채로 들어온 동물을 골라내기 위해 where 절을 이용하였다.
역시 where 절을 사용하여 이름이 있는(없지 않은) 동물을 골라내었다.
name 열에 값이 입력되지 않은 경우 NULL로 표시되고, 이를 No name으로 표현하기 위해 if 문을 사용하였다.if 문 사용법if(조건, 참일 떄의 값, 거짓일 떄의 값)
group by 절을 사용하였다.고양이(cat)가 개(dog)보다 먼저 조회되도록 order by 절을 사용하였다.
group by 절을 사용하였고, 두 번 이상 쓰인 조건을 걸기 위해 having 절을 사용하였다.group by 절에서 조건이 필요한 경우 having 절을 이용하면 된다.
몇 시인지 구하기 위해 hour 함수를 사용하였다.9시부터 19시까지 각 시간대 별로 구하기위해 where 절에서 between 함수를 사용하였다.
해당 이름이 있는지 확인하기 위해 where 절에서 in 구문을 사용하였다.
문제 풀이
문제 풀이
animal_id를 기준으로 두 테이블을 조인한다.outs 테이블의 datetime과 ins 테이블의 datetime의 차를 기준으로 내림차순(desc)정렬을 한다.보호 기간이 가장 길었던 동물 두 마리만 조회하므로 limit 2를 해준다.
date_format을 사용하여 날짜를 표현하였다.date_format(날짜, 형식) : 날짜를 지정한 형식으로 출력date_format 구분 기호
문제 풀이
문제 풀이
서브쿼리를 이용하여 해결하였다.
처음에는 cart_id를 기준으로 group by 절을 사용하여 테이블을 만들고 group_concat을 이용하여 다음과 같이 풀어보려 했다.위와 같이 입력하자 where 절에서 오류가 났다. 왜 오류가 났는지는 아직 모르겠다.그래서 where 절을 두 번 사용하여 단
우선 학생의 점수가 몇등급인지 알 수 있도록 두 테이블 students, grades를 join해야한다.이때 on 조건에서 값이 같을 수가 없으므로 between 함수를 사용하였다.또한, 8등급 미만인 학생의 이름은 NULL 처리를 해야하므로 select 절에서 if
3개 이상의 테이블을 조인해보는 것은 처음이라 어떻게 해야할 지 잘 몰랐는데 그냥 join해보니까 어찌저찌 되긴 했다.테이블마다 공통적으로 가지고 있는 키를 참고하여 join 조건을 걸어주고, 한 문제(challenge)에서 만점을 받은 해커는두 테이블 challeng
서브쿼리가 익숙하지 않아 개인적으로 정말 어려운 문제였다.처음에는 모든 정보를 담은 테이블을 하나 만들어서 조건을 걸려고 헀는데 그렇게 되면 coins_needed에 대한 조건을 걸수 없었다.따라서 wands 테이블에서 id를 제외한 나머지 열들로 coins_neede
마지막에 order by 절을 사용할 때 t1.totalscore이라고 해서 계속 틀렸다.
이 문제 하나 푸는데 거의 2시간이 걸렸다.처음에는 쉽게 접근하다가 문제의 조건인 아래 2가지를 해결하는데 정말 애먹었다.total 값이 중복이 되면 그 행은 보여주지 않는다.그러나 total 값이 최댓값이면 중복이어도 보여준다.처음에는 와 같이 집계함수 안에 집계함수
https://www.hackerrank.com/certificates/67bb2bb61251
처음에는 단순하게 end_date에 있는 것이 start_date에 있으면 하나로 합치려고 join을 이용하여 다음과 같이 쿼리를 작성하였다.위의 쿼리의 문제점은 다음과 같다.3일 이상 진행 된 project는 알 수 없다.그래서 하나의 project가 여러 개의 pr
글이 길어 풀기 싫어서 미루고 있었는데, 아침에 잠도 깰겸 천천히 읽어보았다.영어 공부를 해야겠다는 생각이 들었다. 우선 company_code와 founder에 대하여 group by를 해줄 것이기 때문에 계속 join할 수 밖에 없었다.그렇지 않으면 employee
이 책에서는 첫 실무 데이터를 MySQL Sample Database Diagram으로 설정하였다.DB Diagram은 다음과 같다.그동안 해커랭크와 프로그래머스 문제를 풀면서 테이블간의 관계가 이렇게 많아진 것은 보지 못해서 처음에는 낯설었지만, SQLD 시험을 준비
id에 따른 salary 데이터를 담은 테이블 하나와 friend_id에 따른 salary 데이터를 담은 테이블 하나를 만들어 join하고 본인보다 많이 버는 친구를 골라 그 친구들의 salary를 기준으로 정렬하였다.뭔가 무식하게 한 것 같은데 더 깔끔한 풀이가 있을
if 문을 사용하여 다음과 같이 작성할 수 있다.case 문을 사용하여 작성할 수도 있다. 그런데 이상하게 if 문이 먼저 생각난다.
문제 풀이 처음에는 하나의 쿼리문으로 답을 내야하는 줄 알고 union all을 사용하여 다음과 같이 작성하였는데, 사람 이름이 알파벳순으로 정렬되지 않았다. 아직도 이유를 잘 모르겠다... 그래서 혹시 두 개의 쿼리문으로 작성해도 되는 건가 싶어 해보니 세상에
(20, 20)의 순서쌍도 하나만있으면 symmetric이 아니라 다음과 같이 서브쿼리를 이용해 나온 뷰에서 x, y를 기준으로 group by 했을 때, 같은 순서쌍의 개수가 2 이상인 것들만 출력하였다.
어떤 직업이 사람 수가 가장 많은지 알아야 가능한 풀이로 접근했다.각 직업마다 가상 테이블을 만들었고, 교수가 직업인 사람이 7명으로 가장 많아 row_number를 키로 left join을 사용했다.원래는 full outer join을 사용하려 했으나 MySQL에서는
요즘 자격증 준비한다고 SQL 문제를 따로 풀지 않은 것 같아서 오랜만에 들렀다. 예전에는 어려워보였는데, 회사에서 쿼리를 많이 날리다보니 감이 온 건지 길어보이기만 하고 실제로는 어렵지 않은 문제인 것 같다. viewstats와 submissionssta
문제 풀이
2021년에 가입한 전체 회원 수를 미리 구해놓고 문제에서 요구하는대로 년, 월별 구매한 유저 수를 구해 비율까지 구해주면 된다.
조인 열심히 하고, 문제 중간에 1월에 대한 판매량만 계산해달라고 했으므로 where 절에 조건을 추가해주면 된다.
가장 많이 리뷰를 남긴 사람을 찾기 위해 서브쿼리를 만들고, where 절을 이용해 해당 인원만 골라낸 후 문제에서 요구하는 정보만 뽑으면 된다.
ADP(데이터 분석 전문가) 실기를 준비하다가 너무 막막해서 SQL로 머리 식힐 겸 했다. 이로써 Hackerrank에서의 SQL 공부는 끝났고, 나중에 SQLP를 도전하던가 해야겠다.자격증 중독이 되면 안되는데 생각보다 끊기 힘든 것 같다.https://ww
문제 풀이
문제 풀이
문제 답안
업로드중..