새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기

알고리즘 문제풀이/SQL23

[프로그래머스] 보호소에서 중성화한 동물 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 보호소 들어올때와 나갈때의 정보를 모두 알아야 하므로 조인으로 접근했습니다. WHERE 으로 특정 조건에 맞게 설정하였습니다. 2) 풀이 코드 사용 언어 - MySQL SELECT ai.animal_id, ai.animal_type, ai.name -- 출력 열 FROM animal_ins AS ai JOIN animal_outs AS ao ON ai.animal_id = ao.animal_id -- 조인 WHERE ai.SEX_UPON_INTAKE LIKE "Intact%" AND ao.SEX_UPON_OUTCOME IN ("Spayed Female", "Neutered Male") -- 들어올때 중성화 되지 않았으나 나갈때 중성화 된 동물들 ORD.. 2022. 1. 9.
[프로그래머스] 동명 동물 수 찾기 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 이름이 없는 동물은 개수를 확인할 필요가 없으므로 WHERE 절에서 조건을 걸러냈습니다. 2) 풀이 코드 사용 언어 - MySQL SELECT name, COUNT(animal_id) AS cnt -- 출력 열 FROM animal_ins WHERE name IS NOT NULL -- 이름이 없는 경우는 필요 없으므로 GROUP BY name -- 이름을 그룹화 HAVING COUNT(animal_id) >= 2 -- 이름이 나온 횟수가 2회 이상을때 ORDER BY name; 📝 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없습니다. 2) 새롭게 학습한 내용 특별히 없습니다. 🔗 문제 링크 - https://programmers.co.kr/lea.. 2022. 1. 7.
[HackerRank] Weather Observation Station 20 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 미디안 값을 구하기 위해 COUNT를 이용해서 반으로 나눈 후 조건과 LIMIT 을 이용하여 풀어보려 접근했습니다. 그러나 홀수개와 짝수개인 경우 구해야하는것이 달라 어려움을 겪었습니다. 타 블로그를 참고하여 새로운 방식으로 접근하여 풀었습니다. 2) 풀이 코드 사용 언어 - MySQL SET @idx=-1; -- SET 이용하여 변수로 사용 SELECT ROUND(AVG(lat_n), 4) -- 출력해야하는 열, 짝수인 경우 중앙 두개의 평균을 구해야하므로 평균값 사용 FROM ( SELECT @idx:=@idx+1 AS rowID, lat_n FROM station ORDER BY lat_n ) -- 인덱스를 1씩 증가 시켜서 총 개수를 알아냄 W.. 2022. 1. 6.
[HackerRank] Weather Observation Station 19 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 유클리드 거리 계산 구하는 공식을 적용시키기 위해 제곱을 구하는 POW 함수와 제곱근을 구하는 SQRT 함수를 사용하였습니다. 2) 풀이 코드 사용 언어 - MySQL SELECT ROUND(SQRT(POW((MAX(lat_n) - MIN(lat_n)), 2) + POW((MAX(long_w) - MIN(long_w)), 2)), 4) -- 유클리드 거리 계산 FROM station; 📝 결과 및 학습한 내용 1) 어려웠던 내용 함수의 존재 여부를 알 수 없어서 구글에 검색하여 함수를 알게 되었습니다. 2) 새롭게 학습한 내용 제곱 구하기 : POW(x, y) -> x^y (x의 y제곱) 제곱근 구하기 : SQRT(x) -> 루트 x 의 값 🔗 문제 .. 2022. 1. 4.
[HackerRank] Weather Observation Station 18 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 각 위도, 경도의 최소, 최댓 값을 구해야하므로 MIN 과 MAX 를 사용하여 구함 2) 풀이 코드 사용 언어 - MySQL SELECT ROUND((max(lat_n) - min(lat_n)) + (max(long_w) - min(long_w)), 4) -- MIN과 MAX로 좌표값들을 구하고 맨해튼 거리를 구함 FROM STATION 📝 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없음 2) 새롭게 학습한 내용 절대값을 구하는 함수 ABS(숫자) 를 새로 알게 됨 🔗 문제 링크 - https://www.hackerrank.com/challenges/weather-observation-station-18/problem?isFullScreen=fa.. 2022. 1. 3.
[HackerRank] The PADS 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 결과가 특정 문자들과 함께 출력이 되어야 하므로 CONCAT 을 사용 서로 다른 결과를 출력하는 서브 쿼리를 합쳐야 하기에 UNION 하여 두개의 테이블을 합치는 방식으로 접근 초기에 각 서브쿼리의 결과를 정렬을 한 후 UNION 을 시도하였으나 UNION 을 실행하면 정렬된 결과들이 정렬되지 않은 상태로 테이블이 합쳐져서 결과로 나타나게 됨 문제를 해결하려 여러 방법을 시도하였으나, 세심한 정렬이 어려움 SQL 쿼리문을 두개를 만들어 각자 출력하는 방식으로 접근 2) 풀이 코드 사용 언어 - MySQL SELECT CONCAT(name, "(", SUBSTR(occupation, 1, 1), ")") -- CONCAT 함수를 이용해 특정 문자와 결과.. 2022. 1. 2.
[프로그래머스] 이름에 el이 들어가는 동물 찾기 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 동물의 이름 일부에 el 이 들어가는 경우를 찾아야하므로 LIKE 사용하고, 앞 뒤로 % 사용 2) 풀이 코드 사용 언어 - MySQL SELECT animal_id, name -- 출력 열 FROM animal_ins WHERE animal_type = 'dog' AND name LIKE '%el%' -- 동물의 종류가 개이고, 이름에 el이 들어가는 경우 ORDER BY name; -- 정렬 📝 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없습니다. 2) 새롭게 학습한 내용 특별히 없습니다. 🔗 문제 링크 - https://programmers.co.kr/learn/courses/30/lessons/59047 코딩테스트 연습 - 이름에 el이 .. 2022. 1. 1.
[프로그래머스] DATETIME에서 DATE로 형 변환 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 문제의 조건이 주어진대로 출력 2) 풀이 코드 사용 언어 - MySQL SELECT animal_id, name, DATE_FORMAT(datetime, '%Y-%m-%d') -- 데이터 타입 형 변환을 위해서 DATE_FORMAT 함수 사용 FROM animal_ins ORDER BY animal_id; -- 정렬 📝 결과 및 학습한 내용 1) 어려웠던 내용 날짜와 시간이 함께있는 데이터 타입에서 날짜만 뽑아서 출력하는 방식을 몰랐음 (1) 참고 사이트 블로그 DATE_FORMAT 함수를 사용하여 데이터 타입 데이터에서 원하는 데이터를 뽑을 수 있다는것을 배움 2) 새롭게 학습한 내용 DATE_TIME(날짜, 원하는 형식) : 날짜 데이터를 원하는 .. 2021. 12. 31.
[HackerRank] Top Earners 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 총 수입 계산을 위해 연산 및 별칭 사용 서브쿼리와 Group by 를 이용하여 접근 시도를 하였으나, 어려움을 겪음 총 수입이 많은 순서대로 정렬 및 제한된 개수의 결과만 출력하도록 접근 COUNT(*) 사용시 원치않는 NULL 값이 포함될 수 있어 특정열을 카운트하도록 사용 2) 풀이 코드 사용 언어 - MySQL SELECT (months * salary) AS earnings, COUNT(name) -- 총 수입, 같은 수입을 가진 사람의 수 FROM employee GROUP BY earnings -- 총 수입을 그룹으로 묶음 ORDER BY earnings DESC -- 수입이 많은 순으로 정렬 LIMIT 1; -- 상위 1개만 출력 📝 결.. 2021. 12. 30.
[HackerRank] The Blunder 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 평균을 구해야 하므로 AVG 활용 0을 없애기 위해 REPLACE 함수 사용 2) 풀이 코드 사용 언어 - MySQL SELECT CEIL(AVG(salary) - AVG(REPLACE(salary, '0' ,''))) -- 올림(0이 있을때 평균 - 0이 없을때 평균) FROM employees 📝 결과 및 학습한 내용 1) 어려웠던 내용 문자에서 특정 문자를 없애는 것에 어려움을 겪음 2) 새롭게 학습한 내용 어떠한 열의 특정 문자열을 대체 하기 위해서는 REPLACE 함수를 사용한다 REPLACE(컬럼명, 기존 문자열, 변경 문자열) 🔗 문제 링크 - https://www.hackerrank.com/challenges/the-blunder/pro.. 2021. 12. 29.
[HackerRank] The Report 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 등급 테이블에서 해당 범위 안에 속하면 등급을 매겨야 하므로 조인으로 데이터 결합 출력에서 등급이 특정 수준 이하이면 NULL 값을 출력해야하므로 CASE 절 사용 2) 풀이 코드 사용 언어 - MySQL, Oracle SELECT CASE WHEN g.grade >= 8 THEN s.name -- grade 가 8 이상만 이름 출력 ELSE NULL -- 8 이하는 NULL 값 END , g.grade, s.marks FROM students AS s JOIN grades AS g ON (s.marks >= g.min_mark AND s.marks 2021. 12. 28.
[HackerRank] Average Population of Each Continent 📖 문제 🧑🏻‍💻 풀이 과정 1) 문제 이해 및 접근 대륙별 인구의 평균이 필요하므로 조인, 대륙별 그룹화를 하여 데이터 출력으로 접근 2) 풀이 코드 사용 언어 - MySQL SELECT country.continent, FLOOR(AVG(city.population)) -- 대륙별 모든 도시들의 인구수 평균(정수 이하 버림) FROM city LEFT JOIN country ON city.countrycode = country.code -- 조인 GROUP BY country.continent -- 대륙별로 그룹화 HAVING country.continent IS NOT NULL; -- 대륙 정보가 없는것은 제외 📝 결과 및 학습한 내용 1) 어려웠던 내용 대륙 정보가 없는 경우에도 출력을 했었으나,.. 2021. 12. 27.