본문 바로가기

SQL

(41)
(MySQL) - 프로그래머스(코딩테스트 연습 - SELECT): 특정 형질을 가지는 대장균 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/301646 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krbit masking을 사용해본 문제였습니다.📕 풀이방법📔 풀이과정특정 집합의 포함 여부는 &연산으로 확인 가능합니다. 1. 1번 형질과 3번 형질은 각각 오른쪽에서 첫 번째와 세 번째 bit가 존재하는지 확인하면 됩니다. 이는  각각 genotype & 1, genotype & 4함으로써 포함여부 알 수 있습니다. 2. 2번 형질은 오른쪽에서 두 번째 bit가 0인지 여부로 비포함임을 알 수 있습니다.📔 정답 출력 | 반환오른쪽에 두 ..
(SQL, Python) - LeetCode (easy) 1890. The Latest Login in 2020 https://leetcode.com/problems/the-latest-login-in-2020/description/group by, 조건절을 사용해본 문제였습니다.📕 풀이방법📔 풀이과정user_id로 group 지어 2020년에 login 기록이 있는 경우의 행들을 뽑아 그들 중 time_stamp의 max를 user_id와 select해줍니다.📕 Code📔 PostgreSQLSELECT user_id, MAX(time_stamp) AS last_stampFROM loginsWHERE EXTRACT(YEAR FROM time_stamp) = 2020GROUP BY user_id;📔 MySQL, MS SQL ServerSELECT user_id, MAX(time_stamp) AS last_s..
(SQL) - LeetCode (easy) 1873. Calculate Special Bonus https://leetcode.com/problems/calculate-special-bonus/description/여러 방법을 사용해본 문제였습니다.📕 풀이방법📔 정답 출력 | 반환현재 employee_id가 홀수면서 M으로 시작하지 않은 경우 NULL이라면 0으로 바꿔주고 아니면 해당 값 그대로 select해 bonus라는 alias를 붙여 select해줍니다.📕 Code📔 MySQLSELECT employee_id, CASE WHEN (SELECT e.salary FROM employees e WHERE e.employee_id = employees.employee_id AND e.em..
(SQL) - LeetCode (easy) 1789. Primary Department for Each Employee https://leetcode.com/problems/primary-department-for-each-employee/description/group by와 where절을 사용해본 문제였습니다.📕 풀이방법📔 풀이과정primary_flag = 'Y'거나 속한 부서가 1개인 employee_id, department_id를 선택해줍니다.📕 Code📔 ANSI SQLSELECT employee_id, department_idFROM employee eWHERE primary_flag = 'Y'OR ( employee_id in ( select employee_id from employee group by employee_id having count(employee_id) = 1 ..
(SQL) - LeetCode (easy) 1757. Recyclable and Low Fat Products https://leetcode.com/problems/recyclable-and-low-fat-products/description/간단 조건있는 select 문제였습니다.📕 풀이방법📔 풀이과정저지방이며 재활용가능한 product_id를 select하면 됩니다.📕 Code📔 ANSI SQLselect product_id from products where low_fats = 'Y' and recyclable = 'Y'*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
(SQL) - LeetCode (easy) 1741. Find Total Time Spent by Each Employee https://leetcode.com/problems/find-total-time-spent-by-each-employee/description/group by를 사용해본 문제였습니다.📕 풀이방법📔 풀이과정aggregation 함수 내에 수식이 들어갈 수 있습니다.employees table에서 event_day, emp_ud, out_time - in_time 의 합 을 event_day, emp_id에 대해 group화해 select해줍니다.* Oracle은 ''YYYY-MM-DD 00:00:00" 형식이므로 TO_CHAR로 정답에 맞게 total_time을 가공해줍니다.📕 Code📔 MySQLselect event_day as day, emp_id, sum(out_time - in_time)..
(SQL) - LeetCode (easy) 1729. Find Followers Count https://leetcode.com/problems/find-followers-count/description/group by를 사용해본 문제였습니다.📕 풀이방법📔 풀이과정user_id에 대해 group by한 후 user_id와 follwer_id의 countr값을 projection 후 select해줍니다.📕 Code📔 ANSI sqlselect user_id, count(follower_id) as followers_count from followersgroup by user_idorder by user_id*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
(SQL) - LeetCode (easy) 1693. Daily Leads and Partners https://leetcode.com/problems/daily-leads-and-partners/description/group by와 distinct를 사용해본 문제였습니다.📕 풀이방법📔 풀이과정date_id, make_name에 대해 group화를 진행한 후 lead_id, partner_id의 unique 값을 count해 select해줍니다.📕 Code📔 MySQLselect date_id, make_name, count(distinct lead_id) as unique_leads, count(distinct partner_id) as unique_partnersfrom dailysalesgroup by date_id, make_nameorder by date_id desc📔 Oracl..