코딩/SQL 코딩테스트 49

프로그래머스의 SQL 문제를 다 풀다.

날짜 관련된 3가지만 제외하고 다른 문제는 모두 풀었다. hackerrank보다 문제가 대체로 쉬워서 답지를 보지않고도 조금의 시도끝에 풀 수 있었다. 날짜 관련된 문제도 관련 공부만 하면 풀 수 있다는 자신감이 있다. 다음 목표는 아래 사이트에 있는 문제들이다. https://www.stratascratch.com/ Master Coding for Data Science StrataScratch is a data science interview platform that has over 1000+ real interview questions from top tech companies like Facebook, Amazon, Google, and more. www.stratascratch.com 문제를 봤..

47. Challenges

https://www.hackerrank.com/challenges/challenges/problem Challenges | HackerRank Print the total number of challenges created by hackers. www.hackerrank.com id, 이름 정보가 있는 데이터 셋과 challenge_id가 있는 데이터 셋을 합쳐서 결과를 보여줘야한다. 우선 모든 개수를 다 출력해보자 최대값이외의 중복된 값은 출력하면 안되기때문에 중복되는 값들을 빼줘야한다. 서브쿼리를 만들어서 중복되는 값을 제외하고자하였다. 서브쿼리 내에서 중복된 값을 제외해야하는데 challenge_id 개수가 2개 이하인 것을 출력하는 것이라서 잘못되었다. max(challenge_id)와 rotn..

46. New Companies

https://www.hackerrank.com/challenges/the-company/problem?isFullScreen=true 여러 데이터를 연결해서 데이터를 출력하는 문제를 풀어보자 여러 데이터의 공통되는 부분을 연결시켜 연결을 해주고 개수를 나는 처음에 comany_code가 모든 데이터에 다 있어서 comany_code로 JOIN하면 되는 것으로 생각을 했었다. 그런데 결과는 출력되지도 않고 틀리다고 나온다.... 연결되는 데이터 개수를 제한시켜서 해보았는데 잘 성공하지 않았다... 서브쿼리를 사용해보기도하고 내가 생각할 수 있는 것들을 다 생각해보았는데 정답이 안나왔다... 내 생각에는 GROUP BY 문제로 생각되서 해당 부분만 계속 바꿨다. 아래와 같이 코드를 작성했을 때는 잘 나와서..

45. Ollivander's Inventory - 졌잘싸

이번 문제는 다른 데이터 셋을 연결하는 문제이다. is_evil이 0이고 code, age, power에 따른 coins_needed의 최소값을 찾는 것이다. age와 power가 같은 것중 최저의 coins_needed를 찾는 문제이다. 먼저 GROUP BY로 최소의 값을 찾아보았다. ID때문에 오류가 나는 것으로 보인다. ID 변수를 지우면 정상적으로 출력이 된다. FROM 절에서 데이터를 불러와도 잘 안되었다... WHERE절을 이용해서 두 데이터를 합쳐보려고했는데 잘 되지않았다... ID만 다르고 다른 것은 다 같은 것들을 걸러내는 것이 안되었다. WHERE에 CODE를 더 넣어서 해보았는데 중복된 값을 걸러내는 것이 불가능했다... 혹시 EVIL이 0, 1로 구분되지않을까하는 마음에 시도해보았는..

44. Binary Tree Nodes - 다른 코드 참고

데이터의 구조를 파악하고 출력하는 문제이다. 트리형인 데이터를 leaf, inner, loot로 구분하면 된다. 먼저 상위 노드로 이어지는 쿼리를 작성해보았다. 이 쿼리의 문제는 최상의 노드로 가면 데이터가 삭제된다.... 그래서 15개 데이터 중 12개만이 출력되었다. (+)=로 바꿔서도 해보았는데 오류가 났다... 원래 내 생각은 이 코드가 잘 되었다면 2,3,4번째항에 null이 있다면 끝나는 것으로 생각해서 처음 되는 것은 leaf, 그 다음은 inner, 마지막은 root로 지으려고했으나 잘 되지않았다... 3일정도 생각을 해보았는데 잘 모르겠더라... 그래서 결국 다른 사람의 쿼리를 보았다.. 간단하게 CONCAT 함수로 구현했다. P가 NULL이면 ROOT N이 P에 있으면 INNER 이외엔..

43. THE PADS

이름 및 직업의 첫번째 글자를 출력하고 끝에 직업별 인원수를 작성하면 되는 문제이다. substr 코드를 사용해서 직업의 첫번째 글자를 가져오자 이후 count를 통해 개수 및 직업을 가져오면 될 것같다.!!! 나는 두가지로 나눠서 출력하려고 시도했다. 새로 등장한 함수를 소개하면, CONCAT은 문자열을 결합할 수 있는 함수이다. 쉼표로 여러 문자열을 이어줄 수 있고 내부에 함수도 적용할 수 있으니 예쁘게 출력이 가능하다. 아래에서는 첫글자를 괄호 안에 넣어야해서 CONCAT을 사용했다. 또한 두번째 쿼리에서 CONCAT으로 여러 함수, 변수를 한꺼번에 출력할 수 있는 것을 보여줬다. 세부 조건을 ORDER BY로 정돈해주면 된다. 그런데 틀렸다... 1번째 쿼리에서 NAME을 CONCAT안에 집어넣어..

42. Weather Observation Station 20

. MEDIAN 값을 출력해보자 where과 rank를 써서 문제를 한번 풀어보자 순위를 뽑아서 하려고했는데 잘 나오지 않았다... 왜 안되는지는 사실 아직도 잘 모름...ㅠ 결국 데이터 개수를 먼저 세보고 중간값이 250등이라는 것을 계산한 뒤에 값을 뽑았다. 답은 맞추긴했는데 짜임새가 만족스럽지않다... 다음 풀어볼때는 더 성장해서 만족할 답을 적어보자

40. Average Population of Each Continent

나라별 인구의 평균을 뽑아보자 문제를 푸는 순서는 1. 먼저 WHERE로 두 데이터를 묶는다. 2. GROUP BY로 나라별로 묶는다. 3. AVG로 인구의 평균을 계산한다. 4. FLOOR로 버림을한다.(TRUNC도 가능) 내가 5일전에 문제를 잘 풀었나 확인해보자 이번 문제는 한번에 풀었다. 한번에 맞추니 기분이 너무 좋다.. 앞으로도 한번의 실행으로 정답을 꺼낼 수 있게 노력해보자