본문 바로가기

Algorithm/SQL

(46)
(MYSQL) - 프로그래머스 (코딩 테스트 연습 - GROUP BY) : 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/298519 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krgroup by를 사용해본 문제였습니다.📕 풀이방법📔 풀이과정coalesce함수를 사용하면 NULL인 값을 특정한 값으로 처리할 수 있습니다.fish_info를 fish_type에 대해 group by하고 length의 avg가 33이상인 id와 max length, fish_type을 select해줍니다.📕 Code📔 MySQLselect count(id) as fish_count, max(..
(SQL) - LeetCode (easy) 1795. Rearrange Products Table https://leetcode.com/problems/rearrange-products-table/description/union all을 사용해본 문제였습니다.📕 풀이방법📔 정답 출력 | 반환기본적인 selection을 store별로 수행해 record들을 합쳐야하므로 union all을 해줘야합니다.📕 Code📔 ANSI SQLSELECT product_id, 'store1' AS store, store1 AS priceFROM ProductsWHERE store1 IS NOT NULLUNION ALLSELECT product_id, 'store2' AS store, store2 AS priceFROM ProductsWHERE store2 IS NOT NULLUNION ALLSELECT pro..
(SQL) - LeetCode (easy) 1731. The Number of Employees Which Report to Each Employee https://leetcode.com/problems/the-number-of-employees-which-report-to-each-employee/join을 사용해본 문제였습니다.📕 풀이방법📔 풀이과정employee_id가 reports_to인 조건으로 자기 자신을 join하면 필요한 employee_id별 보고된 행 개수를 구할 수 있습니다.해당 가상 table의 employee_id, name, employee_id의 개수, 보고자의 나이 평균을 select해준 후 employee_id에 대한 오름차순으로 정렬해줍니다.📕 Code📔 ANSI SQLselect e1.employee_id, e1.name, count(e1.employee_id) as reports_count, round(avg..
(C++) - LeetCode (easy) 1633. Percentage of Users Attended a Contest https://leetcode.com/problems/percentage-of-users-attended-a-contest/description/group by와 집계함수를 사용해본 문제였습니다.📕 풀이방법📔 풀이과정두 table을 join하지 않고 contest_id를 group by로 percentage를 계산해 select해줍니다.📔 정답 출력 | 반환📕 Code📔 ANSI SQLSELECT r.contest_id, ROUND(COUNT(DISTINCT r.user_id) / (SELECT COUNT(*) FROM Users) * 100.0, 2) AS percentageFROM Register rGROUP BY r.contest_idORDER BY pe..
(SQL) - LeetCode (easy) 1527. Patients With a Condition https://leetcode.com/problems/patients-with-a-condition/ 📕 풀이방법 📔 정답 출력 | 반환 LIKE절을 사용해 DIAB1으로 시작하는 conditions를 select합니다. 📕 Code 📔 ANSI SQL SELECT * FROM patients WHERE conditions LIKE 'DIAB1%' OR conditions LIKE '% DIAB1%'; *더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
(SQL) - LeetCode (easy) 1507. Reformat Date https://leetcode.com/problems/find-users-with-valid-e-mails/ 정규 표현식을 사용해본 문제였습니다. 📕 풀이방법 📔 풀이과정 첫 글자는 alphabat, 다음부터는 alphabat, '.', '_', '-', 숫자가 존재하며 domain name이 있는 valid 한 email 주소만 찾아 select합니다. 📕 Code 📔 MySQL SELECT user_id, name, mail FROM Users WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9._-]*@leetcode\\.com$'; *더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
(SQL) - LeetCode (easy) 1484. Group Sold Products By The Date https://leetcode.com/problems/group-sold-products-by-the-date/ 언어별 group by 시 연속되는 문자열을 포함하는 여러 방식을 사용해본 문제였습니다. 📕 풀이방법 📔 풀이과정 sell_date와 distinct한 product 개수 num_sold와, group 화 된 product는 나열할 수 있는 MySQL의 GROUP_CONCAT나 PostgreSQL의 STRING_AGG나 Oracle의 LISTAGG를 사용해 products열을 select해줍니다. 📕 Code 📔 MySQL SELECT sell_date, COUNT(DISTINCT product) AS num_sold, GROUP_CONCAT(DISTINCT product ORDER BY pr..
(SQL) - LeetCode (easy) 1251. Average Selling Price https://leetcode.com/problems/average-selling-price/description/ Average Selling Price - LeetCode Can you solve this real interview question? Average Selling Price - Table: Prices +---------------+---------+ | Column Name | Type | +---------------+---------+ | product_id | int | | start_date | date | | end_date | date | | price | int | +--------------- leetcode.com case, join, group by를 사용해 본 문제..