sql 103

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일전에 문제를 잘 풀었나 확인해보자 이번 문제는 한번에 풀었다. 한번에 맞추니 기분이 너무 좋다.. 앞으로도 한번의 실행으로 정답을 꺼낼 수 있게 노력해보자

38. Population Census

오랜만에 코딩테스트 문제이다. 요즘도 꾸준히 문제를 풀려고하는데 갑자기 어려워진 느낌이라서 많이 느려졌다. 그래도 계속 도전해보고있으니 언젠가는 풀리지않을까?? 아무튼 지난번에 풀었던 문제를 다 정리하면서 마음을 정리해보자 이번 문제는 두 테이블을 연결해서 AISA 인구의 합을 구하는 문제이다. WHERE XXX=YYY로 연결해보면 될 것이다. 처음 시도에는 틀렸다.. 왜 틀렸는지 생각해보자 asia에서만 뽑아야하는데 전체에서 다 합친 인구를 구했다, where에서 조건을 하나 더 추가해서 다시 해보자 다시 해보니 맞췄다. 문제를 천천히 읽고 조심 또 조심해보자