본문 바로가기

Database13

[MySQL] 그룹별로 column 데이터 이어 붙이기 (GROUP_CONCAT) https://leetcode.com/problems/group-sold-products-by-the-date/ Group Sold Products By The Date - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 위 문제를 풀면서 알게 된 점 정리 일단 문자열을 붙일 때는 CONCAT, CONCAT_WS 들을 많이 사용함 CONCAT은 문자열 그대로 붙이는 거고 CONCAT_WS는 구분자 두는 것 그룹별로 데이터를 이어 붙일 땐 GROUP_CONCAT을 .. 2022. 5. 4.
[MySQL] SUM + CASE WHEN + GROUP BY 처리 https://leetcode.com/problems/capital-gainloss/ 위 문제를 풀고 내용 정리 주식 별로 얼마나 손익을 봤는지 계산하는 문제 처음엔 GROUP BY stock_name, operation 이렇게 묶고 SELECT 한번 더 해서 나중에 처리하려고 했는데 뭔가 잘 되지 않았다. SUM 안에 CASE WHEN을 넣어서 처리하면 깔끔하게 풀이할 수 있다. # Write your MySQL query statement below SELECT stock_name, SUM( CASE WHEN operation = 'Buy' THEN -price ELSE price END ) AS capital_gain_loss FROM Stocks GROUP BY stock_name ; 2022. 4. 20.
[MySQL] COUNT(1), COUNT(*), COUNT(column) 차이 MySQL에서 COUNT(1)과 COUNT(*)의 차이에 대해서 알아봤다. 결론은 COUNT(1)과 COUNT(*) 차이가 없다. COUNT(*)는 NULL 값을 포함하는지 여부에 관계없이 검색된 행 수의 카운트를 반환 COUNT(1), COUNT(0), COUNT(-2312312313) 모두 똑같이 동작함 https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_count MySQL :: MySQL 8.0 Reference Manual :: 12.20.1 Aggregate Function Descriptions MySQL 8.0 Reference Manual / ... / Functions and Operators / Aggre.. 2022. 4. 5.
[MySQL] 사칙연산 + 형 변환 https://leetcode.com/problems/not-boring-movies/submissions/ Not Boring Movies - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 위 문제를 풀면서 사칙연산하는 것 정리 위 문제는 나머지를 구하는 문제다. MOD(X, Y) X를 Y로 나눈 나머지 SELECT id, movie, description, rating FROM Cinema WHERE MOD(id, 2) = 1 AND description '.. 2022. 4. 3.
[MySQL] DATE 타입으로 변경 DATE_FORMAT 코테에서 DATE_FORMAT이 생각이 안났다. DATE따로 FORMAT 따로 생각났다. 공부가 많이 부족하다고 느꼈다 정리를 해보자. DATETIME은 YYYY-MM-DD hh:mm:ss의 형식을 가진다 이를 수정하려면 DATE_FORMAT이 필요하다. DATE 타입은 YYYY-MM-DD의 형식을 가진다. 아마 가장 많이 사용되리라 생각하는 DATETIME에서 DATE로 변환하는 방법은 아래와 같다. -- 현재시간 SELECT NOW(); -- 2022-04-02 11:11:37 -- 변환 SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 2022-04-02 -- YY 형식 SELECT DATE_FORMAT(NOW(), '%y-%m-%d'); -- 22-04-02 Specifi.. 2022. 4. 2.
[MySQL] 데이터 삭제 https://leetcode.com/problems/delete-duplicate-emails/ Delete Duplicate Emails - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 위 문제를 풀고 DELETE 구문에 대해 정리하고자 함. DELETE FROM 테이블 이름 WHERE 조건 DELETE p1 FROM PERSON p1, PERSON p2 WHERE p1.email = p2.email and p1.id > p2.id ; 위와 같이 뷰가 두 .. 2022. 3. 31.
[MySQL] 그룹별 상위 N 개 https://leetcode.com/problems/department-top-three-salaries/ Department Top Three Salaries - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 위의 문제를 풀다 RANK에서 그룹별로 처리하는 방법을 알게 되어 정리. 결론은 그룹별로 해당 Row의 Rank를 매기고 싶을 때 PARTITION BY를 사용하면 된다. SELECT Department, Employee, salary FROM ( SE.. 2022. 3. 31.
[MySQL] rank함수 - 랭킹 https://leetcode.com/problems/rank-scores/ Rank Scores - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 위 문제를 풀면서 알게 된 사실을 정리. MySQL 8 버전 이상부터는 rank, dense_rank 함수 사용 가능 MySQL 버전 확인 SELECT VERSION() rank 함수와, dense_rank 함수 모두 같은 순위는 같은 랭크로 처리됨 rank함수는 순위가 밀려남 EX) 1, 1, 3, 4, 5 den.. 2022. 3. 31.
[MySQL] 변수 처리(local variable vs. user variable) https://leetcode.com/problems/nth-highest-salary/ Nth Highest Salary - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 위 문제를 풀면서 변수(특히 지역변수 처리에 대해 알게 되어서 정리해 놓고자 함.) CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN RETURN ( # Write your MySQL query statement below. ); E.. 2022. 3. 31.
[MySQL] N번째로 큰 값 위와 같은 테이블이 있을 때 가장 큰 값을 구하고 싶으면 MAX 함수를 사용하면 된다. 그럼 N번째로 큰 값은 어떻게 불러올까? 여러 방법이 있겠지만, LIMIT OFFSET을 사용하면 된다. 2021.09.17 - [Database/PostgreSQL] - [PostgreSQL] limit, offset [PostgreSQL] limit, offset limit, offset을 알아보자. LIMIT는 몇 개 불러올건지, OFFSET은 어디부터 불러올건지 -- 처음부터 시작해서 100개 Row 불러오기 SELECT * FROM table LIMIT 100; SELECT * FROM table LIMIT 100 OFFSET 0; -- 101.. hkim-data.tistory.com -- 두번째로 큰 값 .. 2022. 3. 31.
[MySQL] JOIN 이후 NULL 처리 https://leetcode.com/problems/combine-two-tables/ Combine Two Tables - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 데이터 생성 CREATE table If Not Exists Person (personId int, firstName varchar(255), lastName varchar(255)); Create table If Not Exists Address (addressId int, personId.. 2022. 3. 31.
SQL 쿼리 연습 사이트, 쿼리 정리 사이트 http://sqlfiddle.com/ SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions. Query Panel Use this panel to try to solve the problem with other SQL statements (SELECTs, etc...). Results will be displayed below. Share your queries by copying and pasting the URL that is generated after each run. sqlfiddle.com 위 사이트에서 데이터베이스 만들고 간단하게 테스트해볼 수 있어서 편하다. https:.. 2022. 3. 31.
[PostgreSQL] limit, offset limit, offset을 알아보자. LIMIT는 몇 개 불러올건지, OFFSET은 어디부터 불러올건지 -- 처음부터 시작해서 100개 Row 불러오기 SELECT * FROM table LIMIT 100; SELECT * FROM table LIMIT 100 OFFSET 0; -- 101번째부터 시작해서 5개 ROW 반환 SELECT * FROM table LIMIT 5 OFFSET 100; ---참고--- Python 코드에서는 이를 f-string + for loop 통해 활용 가능 (Data chunking) # Python import awswrangler as wr import boto3 def get_df(query): # Anyway, connect to AWS Database throug.. 2021. 9. 17.