SQL

[MySQL] SELECT 데이터 추출하기

너굴위 2024. 3. 20. 19:30
728x90
반응형

1. 잡은 물고기의 평균 길이 구하기

코딩테스트 연습 - 잡은 물고기의 평균 길이 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

Logic

1) NULL값을 다른 값으로 대체하여 표현

IFNULL (? , ?)

ex) 컬럼(LENGTH)이 NULL이면 0으로 치환하여 반환

SELECT IFNULL(LENGTH,0) FROM FISH_INFO;

 

 

2) 특정 컬럼의 평균값

AVG(컬럼명)

ex) 컬럼(LENGTH)의 평균

SELECT AVG(LENGTH) FROM FISH_INFO;

 

 

3) 결과값 반올림하기

ROUND(결과값, 반올림 자릿수)

ex) 결과값의 3번째 자리까지 반올림

SELECT ROUND(AVG(LENGTH),3) FROM FISH_INFO;

 

 

4) 추출한 결과 컬럼명을 다른 이름으로 나타내기

SELECT 컬럼명 AS '설정할 다른 컬럼명' FROM 테이블명;

 

결과

SELECT ROUND(AVG(IFNULL(LENGTH,10)),2) AS 'AVERAGE_LENGTH' FROM FISH_INFO;

2. 잔챙이 잡은 수 구하기

코딩테스트 연습 - 잔챙이 잡은 수 구하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

Logic

1) NULL값 세기

COUNT(컬럼명)

SELECT COUNT(*) FROM FISH_INFO;

=> COUNT(*)는 NULL값을 포함하여 계산한다.

 

SELECT COUNT(LENGTH) FROM FISH_INFO;

=> COUNT(컬럼명)은 NULL값을 포함하지 않고 계산한다.

 

 

결과

SELECT COUNT(*) - COUNT(LENGTH) AS 'FISH_COUNT' FROM FISH_INFO;

=> NULL까지 센 결과값에서 NULL값이 없는 결과값빼면 된다.

=> 결과적으로 NULL값에 대한 COUNT만 나오게 된다.


3. Python 개발자 찾기

코딩테스트 연습 - Python 개발자 찾기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

Logic

1) 컬럼에서 특정 문자열 검색하기

SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '문자열';

ex) Javascript 스킬이 있는 사람의 정보 출력

SELECT * FROM DEVELOPER_INFOS WHERE SKILL_1 LIKE 'Python' OR SKILL_2 LIKE 'Python';

 

 

2) 결과 오름차순으로 나타내기

SELECT 컬럼명 FROM 테이블명 ORDER BY 컬럼명 ASC;

=> ORDER BY 뒤에 붙는 컬럼명은 정렬 기준이 되는 컬럼이다.

 

ex) ID를 기준으로 오름차순 정보 출력

SELECT * FROM DEVELOPER_INFOS ORDER BY ID ASC;

 

+) 내림차순은 DESC로 나타내면 된다.

 

 

결과

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPER_INFOS WHERE SKILL_1 LIKE 'Python' OR SKILL_2 LIKE 'Python' OR SKILL_3 LIKE 'Python' ORDER BY ID ASC;

4. 조건에 부합하는 중고거래 댓글 조회하기

코딩테스트 연습 - 조건에 부합하는 중고거래 댓글 조회하기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

Logic

1) 테이블 조인하기 (Inner Join)

SELECT 컬럼명 FROM 첫 번째 테이블명 INNER JOIN 두 번째 테이블 ON 조인 조건 [WHERE 검색 조건];

=> INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식한다.

=> ON 뒤의 조인 조건은 어떤 컬럼을 기준으로 JOIN할 것인지에 대한 내용을 작성한다.

      ex) ON A.BOARD_ID = B.BOARD_ID

             = A 테이블의 BOARD_ID와 B 테이블의 BOARD_ID가 같은 것을 기준으로 JOIN한다.

 

 

2) 날짜 포맷 정하기

SELECT DATE_FORMAT(컬럼명, '%Y-%m-%d') AS 지정컬럼명 FROM 테이블명;

=> AS로 출력 컬럼명을 따로 지정해주지 않으면 DATE_FORMAT(컬럼명, ~) 상태로 컬럼명이 출력된다.

출처: MySQL 날짜 포맷 사용방법 정리(DATE_FORMAT) (tistory.com)

 

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %T');

> 2021-03-30 12:00:00

 

SELECT DATE_FORMAT(NOW(), '%Y%m%d');

> 20210330

 

SELECT DATE_FORMAT(NOW(), '%Y%m%d%H%i%S');

> 20210330100000

 

 

3) 날짜 조건 필터링

SELECT 컬럼명 FROM 테이블명 WHERE SUBSTR(컬럼명, 시작인덱스, 끝인덱스) = '비교할 문자열';

=> WHERE 절에서 SUBSTR()함수를 사용해 필드를 잘라내고 비교한다.

 

4) 다중정렬

SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY  컬럼명1 ASC/DESC, 컬럼명2 ASC/DESC;

=> ORDER BY 다중정렬을 할 때, 왼쪽부터 순차적으로 정렬되기 때문에 순서를 고려해야 한다.

     (우선순위가 높은 순서대로 나열)

 

ex) column1을 기준으로 내림차순 정렬 후, column1이 같은 값이면 column2로 내림차순 정렬한다.

SELECT * FROM A.TABLE ORDER BY column1 desc, column2 desc;

 

 

 

결과

SELECT A.TITLE, A.BOARD_ID, B.REPLY_ID, B.WRITER_ID, B.CONTENTS, DATE_FORMAT(B.CREATED_DATE,'%Y-%m-%d') AS CREATED_DATE FROM USED_GOODS_BOARD AS A INNER JOIN USED_GOODS_REPLY AS B ON A.BOARD_ID = B.BOARD_ID WHERE SUBSTR(A.CREATED_DATE,1,7) = '2022-10' ORDER BY B.CREATED_DATE ASC, A.TITLE ASC;
728x90
반응형