SQL 28

SQL 5장 실습문제

소스파일 : https://github.com/bjpublic/postgresql1전국의 인구수 총합을 연도별로 표시# 정답. + || '명' 해주면 인구수 뒤에 "명"도 붙는다select 년도, sum(총인구수) || '명' as 총인구수 from population_by_year group by 1 order by 1; 년도 | 총인구수------+------------ 2010 | 50515666명 2011 | 50734284명 2012 | 50948272명 2013 | 51141463명 2014 | 51327916명 2015 | 51529338명 2016 | 51696216명 2017 | 51778544명 2018 | 51826059명 2019 | 51849861명2최근 5년간 전국의 한 세대당..

SQL 2025.01.23

SQL 집계함수

기본적인 집계함수함수출력내용예시avg()null 값이 아닌 모든 입력 값의 평균avg(컬럼명)count(*)입력한 행의 총 개수count(*)count()null 값이 아닌 모든 입력 행 값의 개수count(컬럼명)max()null 값이 아닌 모든 입력 값의 최댓값max(컬럼명)min()null 값이 아닌 모든 입력 값의 최솟값min(컬럼명)sum()null 값이 아닌 모든 입력 값의 합산값sum(컬럼명)# 예시select 집계함수 from 테이블명;# 결과계산값빈테이블을 조회하면 결과로 아무값이 나오지 않는다. 웹과 db를 연동한다면 조회값이 없을경우에 대체메시지를 설정해주는것이 좋다.boolean 연산 집계함수데이터 타입이 boolean일때 사용가능함수출력내용예시bool_and()입력된 데이터가 모두..

SQL 2025.01.23

SQL GROUP BY, HAVING

GROUP BYselect 검색의 결과로 나오는 정보를 그룹화 해준다.# group by 앞과 뒤의 칼럼명은 동일. # 아래 두 쿼리의 결과는 같다.select 컬럼명 from 테이블명 group by 컬럼명;select distinct 컬럼명 from 테이블명; select item_type from rating group by item_type; item_type------------- drink canned_food ramengroup 이후에 나오는 컬럼명은 컬럼 순서대로 숫자 지정 가능select 컬럼명1,컬럼명2 from 테이블명 group by 1, 2;select 컬럼명1,컬럼명2 from 테이블명 group by 2, 1;group by로 새로운 group을 생성하고 결과를 리턴하는데 이..

SQL 2025.01.23

SQL 4장 실습문제

소스파일 : https://github.com/bjpublic/postgresql1한해 동안 특수학교에서 졸업한 학생의 수가 25명 이상이었던 학교 이름과 남, 여 졸업생 수를 출력.# 테이블 정보 확인\dt # 어떤 컬럼에 "특수학교"라는 데이터가 있는지 유추되는 컬럼 하나씩 직접 확인학교급명에 들어있음# 졸업한 학생의 수가 25명 이상졸업학생수에 대한 칼럼은 없고, 남자 졸업생수와 여자 졸업생수만 있어서 둘을 합침# 정답select 학교명, 졸업남자수, 졸업여자수 from graduates where 학교급명 = '특수학교' AND (졸업남자수 +졸업여자수) >= 25;22015년에 남,여 통합 취업률이 50%가 넘은 학교의 지역명, 이름과 취업률 출력.# 졸업년도 확인. date_trunc로 년도만..

SQL 2025.01.20

SQL 문자열 연산자

# || 연산자. 문자열 데이터 + 문자열이 아닌 데이터 가능. 결과는 문자열 데이터select 'postgre' || 'sql' as result, 'price: ' || 300 || 'won' as result;# length() 문자열의 길이 반환# substring( from 정수 for 정수)문자열의 지정 위치부터 위치까지 반환# left(, 정수)문자열의 지정 위치까지 반환# concat(, , , ...)다수의 문자열을 병합# position( in ) 문자열의 위치 반환select position('postgre' in 'my sql language is postgresql'); ㅡ> 20# replace(, , )문자열의 바뀔문열을 바뀔문자열로 대체함select replace('my sq..

SQL 2025.01.20

SQL 패턴매칭 연산자

# LIKE 연산자조회할 컬럼명에서 설정한 패턴을 가지고 있는 값들 조회조회할 컬럼명 LIKE '패턴'; 특정 값이 패턴과 일치하면 true, 불일치하면 false특정 값 LIKE '패턴';와일드카드 문자 %,_% = 문자열대체, _ = 문자대체select 'pink' like '_in_', 'pink' like 'p%k', 'pink' like 'p__';# ILIKE 연산자대소문자 구분하지 않음, LIKE 연산자는 구분함LIKE = ~~, NOT LIKE = !~~, ILIKE = ~~*, NOT ILIKE = !~~*

SQL 2025.01.20

SQL 서브쿼리 연산자

이전글 https://spring0691.tistory.com/59서브쿼리 연산자# 1개이상의 행을 반환하면 true, 아무것도 없으면 falseEXISTS (서브쿼리)select exists(select * from current_time); ㅡ> true# 서브쿼리에서 같은 행이 하나라도 있으면 true, 아니면 falseselect * from table where amount in (10,20,30); id | name | amount | | id | name | amount -----+------------+--------+ +-----+--------+-------- 1 | apple | 30 | | 1 | a..

SQL 2025.01.20

SQL 날짜 & 시간 연산자, 날짜 & 시간 함수

연산자# 날짜 + 정수select date '2020-07-15' + integer '7' as result; ㅡ> 2020-07-22# 날짜 + 시간select date '2020-07-15' + time '13:00' as result; ㅡ> 2020-07-15 13:00:00# 날짜 - 날짜select date '2020-07-15' - date '2020-07-01' as result; ㅡ> 14# 시간 - 시간select time '13:00' - time '5:00' as result; ㅡ> 08:00:00 (INTERVAL 데이터 타입)# 정수 * 시간 간격(INTERVAL)select 60 * interval '1 second' as result; ㅡ> 00:01:00# 시간 간..

SQL 2025.01.20