SQL
-
[PostgreSQL] 문자열 자르기 - SUBSTRINGSQL 2021. 8. 27. 19:10
문자열 자르기 - SUBSTRING PostgreSQL에서 문자열의 원하는 부분을 추출하기 위해서 SUBSTRING을 사용할 수 있습니다. 먼저 PostgreSQL 튜토리얼 데이터 staff 테이블의 first_name, last_name 칼럼을 불러와 예시로 사용해 보겠습니다. select first_name, last_name from staff (1) SUBSTRING( string, start_position, length ) SUBSTRING ( string ,start_position , length ) start_position 은 문자열에서 추출하고자 하는 시작 위치로 해당 자리(start position)를 포함하여 추출된 결과를 돌려줍니다. 문자열의 자리 번호는 파이썬이 첫번째를 0으로..
-
[PostgreSQL] 데이터 타입 변환 - CAST, :: 연산자SQL 2021. 8. 26. 18:57
데이터 타입 변환 - CAST, :: 연산자 PostgreSQL에서 데이터 타입을 변환하는 방법은 두 가지가 있습니다. 첫 번째는 CAST 를 이용하는 방법이고, 두 번째는 :: 연산자를 활용하는 방법입니다. 먼저 음료 메뉴(menu)와 가격(price) 정보를 담고 있는 menu 테이블을 만들어 주겠습니다. 이때 메뉴 이름과 가격의 데이터 타입은 text로 설정했습니다. WITH menu AS ( SELECT 'Americano' AS menu, '4100' AS price UNION SELECT 'Cappuccino' AS menu, '4600' AS price UNION SELECT 'Caffe Mocha' AS menu, '5100' AS price) SELECT * FROM menu 앞서 만든 ..
-
[PostgreSQL] NULL 값 대체하기 - COALESCESQL 2021. 8. 24. 21:40
NULL 값 대체하기 - COALESCE MySQL에서 IFNULL을 이용해서 NULL 값을 대체해 줄 수 있습니다. 하지만 PostgreSQL에서는 IFNULL이 아닌 COALESCE 을 이용해 NULL 값을 다른 값으로 채워줄 수 있습니다. WITH문을 이용해서 임시로 음료의 이름과 가격에 대한 정보를 담고 있는 menu 라는 테이블을 만들어 주었습니다. Caffe Mocha의 음료값은 NULL 값으로 하였습니다. WITH menu AS ( SELECT 'Americano' AS menu, 4100 AS price UNION SELECT 'Cappuccino' AS menu, 4600 AS price UNION SELECT 'Caffe Mocha' AS menu, null AS price) SELEC..
-
[PostgreSQL] GROUPING SETS/ CUBE/ ROLLUPSQL 2021. 8. 18. 00:44
그룹화 집합을 여러개 만들기 위한 함수 GROUPING SETS / CUBE / ROLLUP GROUPING SETS group by + union all + group by + union all + group by 같이 그룹화된 각 쿼리 결과를 union을 사용해서 하나의 결과로 결합해야 할 때, 쿼리문이 길어지고 쿼리문을 각각 연산해야 하는 문제가 발생합니다. 이러한 문제를 보완하기 위해 GROUPING SETS 을 사용하면 한 번에 그룹화된 쿼리 결과 집합을 생성할 수 있습니다. SELECT c1, c2, aggregate_function(c3) FROM table_name GROUP BY GROUPING SETS ( (c1, c2), (c1), (c2), () ); Example - 국가별 고객 ..
-
[PostgreSQL] UNION/ INTERSECT/ EXCEPTSQL 2021. 8. 11. 16:55
UNION, INTERSECT, EXCEPT UNION, INTERSECT, EXCEPT는 두 개 또는 그 이상의 쿼리 결과를 하나로 결합해서 보여주기 위해 사용합니다. 주의할 점은 두 쿼리 결과의 칼럼 수와 순서가 동일해야 하며, 각 칼럼의 데이터 타입은 호환 가능해야 한다는 것입니다. UNION/ UNION ALL 두 개 이상의 쿼리 결과를 단지 결합해서 하나의 결과로 보여주기 위해서 UNION을 사용합니다. 두 쿼리 결과를 합해서 보여주다 보면 중복되는 열(row)이 있을 수 있는데, 중복 열을 없애고 하나로만 보여주고 싶다면 UNION을, 중복 열도 모두 결과로 받고자 한다면 UNION ALL을 사용하면 됩니다. SELECT c1, c2, c3 FROM tableA UNION (ALL) SELEC..
-
[SQL] SQL Query 쿼리문 (3) - CASE, SubQuery(feat. IN, EXISTS)SQL 2021. 7. 26. 00:36
CASE, SUBQUERY( IN/ NOT IN, EXISTS/ NOT EXISTS ) SQLite tutorial chinook SQLite sample 데이터를 사용했습니다. https://www.sqlitetutorial.net/sqlite-sample-database/ SQLite Sample Database And Its Diagram (in PDF format) You can download a SQLite sample database and its diagram to practice with SQLite. You will also learn how to connect to the database using sqlite3 tool www.sqlitetutorial.net CASE SQL에서 i..
-
[MySQL] 프로그래머스 SQL 고득점 Kit - String, DateSQL 2021. 7. 11. 23:53
루시와 엘라 찾기 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요. SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') ORDER BY ANIMAL_ID 이름에 el이 들어가는 동물 찾기 보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가..
-
[MySQL] 프로그래머스 SQL 고득점 Kit - JOINSQL 2021. 7. 11. 23:23
* ANIMAL_OUTS 테이블의 ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키 없어진 기록 찾기 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요. SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME FROM ANIMAL_OUTS LEFT OUTER JOIN ANIMAL_INS ON ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID WHERE ANIMAL_INS.ANIMAL_ID IS NULL AND ANIMAL_OUTS.ANIMAL_ID IS NOT NULL 있었는데요 없었습니다 관리자의 실수로 일..