목록SQL (15)
Coding Planet
회사의 쿼리문을 공부하던 중 WHERE 1=1 이라는 조건절을 다수 봤다. 무조건 참인 조건을 굳이 쓰는 이유는 뭘까? 쿼리 디버깅 시 주석처리가 편하기 때문 만약 고객 목록중 뉴욕에 사는 고객만을 조회하고 싶을 경우 아래와 같이 AND절을 삭제해야하고 기록을 위해 남긴다고 해도 주석처리 하기가 애매~하다. SELECT * FROM Customers WHERE Country = 'USA' AND City = 'New York' SELECT * FROM Customers WHERE City = 'New York' 이럴경우 WHERE 1=1 조건을 추가하면 주석을 쉽게 처리하고 쿼리문 조건을 삭제하지 않아도 된다! SELECT * FROM Customers WHERE 1=1 --AND Country = 'U..
보호되어 있는 글입니다.
✨ 문제 https://leetcode.com/problems/user-activity-for-the-past-30-days-i/description/ User Activity for the Past 30 Days I - LeetCode User Activity for the Past 30 Days I - Table: Activity +---------------+---------+ | Column Name | Type | +---------------+---------+ | user_id | int | | session_id | int | | activity_date | date | | activity_type | enum | +---------------+---------+ There leetcode..
✨ 문제: 1527. Patients With a Condition https://leetcode.com/problems/patients-with-a-condition/solutions/?q=regexp+oracle&orderBy=most_relevant 💻코드 select patient_id, patient_name, conditions from patients where regexp_like(conditions, '^DIAB1| DIAB1') 👩💻 풀이 방법 이번 문제의 경우 condition like = '%DIAB1' OR condition LIKE = '% DIABL1%'으로 간단히 풀 수 있는 문제이다. 그러나 함정이 하나있는데 공백(SPACE)이 구분자로 쓰인다는 것을 주의해야한다. 하지만..
✨ 문제: 1484. Group Sold Products By The Date https://leetcode.com/problems/group-sold-products-by-the-date/description/?envType=study-plan&id=sql-i 💻코드 SELECT TO_CHAR(sell_date, 'YYYY-MM-DD') AS sell_date, COUNT(DISTINCT product) as num_sold, LISTAGG( product,',') WITHIN GROUP(ORDER BY product) AS products FROM (SELECT DISTINCT sell_date, product FROM Activities) GROUP BY sell_date 👩💻 풀이 방법 해당 날..
✨ 문제: 1667. Fix Names in a Table https://leetcode.com/problems/fix-names-in-a-table/description/?envType=study-plan&id=sql-i Fix Names in a Table - LeetCode Fix Names in a Table - Table: Users +----------------+---------+ | Column Name | Type | +----------------+---------+ | user_id | int | | name | varchar | +----------------+---------+ user_id is the primary key for this table. This table cont..
✨ 문제 196. Delete Duplicate Emails https://leetcode.com/problems/delete-duplicate-emails/description/?envType=study-plan&id=sql-i Delete Duplicate Emails - LeetCode Delete Duplicate Emails - Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | email | varchar | +-------------+---------+ id is the primary key column for this table. Each row of thi..
✨ 문제 💻코드 /* Write your PL/SQL query statement below */ SELECT EMPLOYEE_ID, CASE WHEN MOD(EMPLOYEE_ID,2)=1 AND NAME NOT LIKE 'M%' THEN SALARY ELSE 0 END AS BONUS FROM EMPLOYEES ORDER BY EMPLOYEE_ID 👩💻 풀이 방법 문제의 조건 여러가지인데 각각의 조건을 case when으로 구현했다. employee_id가 odd number(홀수)조건을 만족하기 위해서 나머지를 구하는 함수인 MOD()를 사용했다. 즉 2로 나눴을 때 1이 남는 홀수의 특성을 이용한 것이다. 사원의 이름이 M으로 시작하지 말아야한다는 것은 NOT LIKE 'M%'으로 구현했다. 🔔 ..
✨ 문제 💻코드 👩💻 풀이 방법 비교적 간단한 문제임에도 불구하고 틀렸었다. 컬럼 이름만 보고 id를 기준으로 inner join을 했기 때문이다 표에 대한 상세설명을 다시 확인하니 Orders 테이블의 customerID가 Customers 테이블의 ID라는 것을 발견했다. WHERE 조건절에 서브쿼리로 ORDERS 테이블에서 CustomerId를 뽑아내고 NOT IN을 이용했다. 🔔 느낀점 다른 사람들의 solutiond을 보니 left join으로 문제를 푼 경우가 많았다. 아직 left join, right join이 익숙하지 않은데 자연스럽게 쓸 수 있도록 공부해야겠다. SELECT c.name AS Customers FROM (customers AS c LEFT JOIN orders AS o..