- 스택
- create
- N:1
- M:N
- 이진트리
- 완전검색
- regexp
- 백트래킹
- drf
- Vue
- count
- DB
- 트리
- delete
- update
- ORM
- Article & User
- 뷰
- 통계학
- distinct
- 그리디
- Tree
- outer join
- 큐
- stack
- 쟝고
- Django
- SQL
- migrations
- Queue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
목록SQL (155)
데이터 분석 기술 블로그
SELECT patient_id,patient_name,conditions from PatientsWHERE conditions LIKE 'DIAB1%' OR conditions LIKE '% DIAB1%' ;생각해 보면 쉬운 문제인데 LIKE를 생각해내지 못했다.
DELETE p1FROM Person p1, Person p2WHERE p1.Email = p2.Email AND p1.Id > p2.Id;SELECT문만 연습해 왔는데 DELETE도 사용할 수 있다는 것을 알았다.
SELECT sell_date, COUNT(DISTINCT(product)) AS num_sold, GROUP_CONCAT(DISTINCT product ORDER BY product ASC separator ',') AS productsFROM ActivitiesGROUP BY sell_dateORDER BY sell_date ASC;GROUP_CONCAT에 대해서 처음 알았다. 원래 CONCAT이나 CONCAT_WS인가?라고 생각했었는데 적용을 할 수가 없어서 답을 확인해야 했다.
SELECT *FROM UsersWHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*@leetcode[.]com$';사실 REGEXP는 너무 많은 문자들이 있어서 익숙하지 않다.*는 0번 이상 반복을 의미한다.[a-zA-Z][a-zA-Z0-9_.-]*는 "첫 글자는 영어 알파벳, 뒤에는 지정된 문자가 반복 가능"을 의미한다.. 은 대괄호 안에 넣어야 문자 그대로의 점(.)으로 인식된다.$은 문자열이 정확히 끝나도록 제한한다.
SELECT person_nameFROM Queue q1JOIN (SELECT person_id, SUM(weight) OVER (ORDER BY turn) AS Total_WeightFROM Queue) q2ON q1.person_id = q2.person_idWHERE q2.Total_Weight
SELECT s.user_id, ROUND(IFNULL(SUM(CASE WHEN c.action = 'confirmed' THEN 1 ELSE 0 END) / COUNT(c.user_id), 0), 2) AS confirmation_rateFROM Signups sLEFT JOIN Confirmations cON s.user_id = c.user_idGROUP BY s.user_id;JOIN을 사용하지 않으면 Signups에 있는 user_id가 반영이 안 된다.IFNULL을 사용해서 NULL일 때 0이라는 조건을 넣지 않으면 Confirmations 테이블에 없는 user_id에는 confirmation_rate가 NULL로 나타난다. 우리는 0이 필요하므로 IFNULL을 사용했다.
SELECT customer_idFROM CustomerGROUP BY customer_idHAVING COUNT(DISTINCT(product_key)) = (SELECT COUNT(product_key) FROM Product);문제 분석: 고객별로 구매한 고유 제품 수를 전체 제품 수와 비교해야 함.구현 접근:고객별로 데이터를 그룹화(GROUP BY customer_id).고유 제품 수 계산(COUNT(DISTINCT product_key)).전체 제품 수 비교 → HAVING 절 사용 필요.실수:집계 함수 조건에 HAVING 대신 WHERE를 사용하려 했음.개선 방향집계 함수 조건을 처리해야 할 때는 항상 HAVING을 고려.GROUP BY → COUNT → HAVING의 흐름을 연습.
SELECT DISTINCT(l1.num) AS ConsecutiveNumsFROM Logs l1JOIN Logs l2 ON l1.id = l2.id - 1JOIN Logs l3 ON l1.id = l3.id - 2WHERE l1.num = l2.num AND l2.num = l3.num;ConsecutiveNums만 구하면 되는 거니까 만약에 1 1 1 2 1 1 1이어도 1이 두 번 Output에 나올 필요는 없다. 따라서 DISTINCT(l1.num)으로 구하면 된다.