일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- string과 stringbuilder 성능 최적화
- 자바 합성수 찾기
- 프로그래머스 문자열 정렬하기(1)
- 왓챠피디아 클론 코딩
- 펙토리얼
- 모스부호(1) 자바
- 스프링부트 의존성 설정
- 자바 소인수분해
- string과 stringbuilder의 차이
- 스프링 부트 배너 설정
- 소인수분해 구하는 공식
- 접속 url 출력
- 배열 순환
- 프로그래머스
- string과 stringbuilder의 차이점
- 프로그래머스 공 던지기 게임
- stringbuilder란
- 오블완
- 숨어있는 숫자의 덧셈 (1) 자바
- spring boot 배너 설정
- 외계행성의 나이 자바
- 개미 군단 자바
- 티스토리챌린지
- 배열 순환 자바
- 배열 순환 문제 공식
- string과 stringbuilder 성능 차이
- string과 stringbuilder
- 경우의 수 자바
- 자바 팩토리얼
- 스프링 부트 프로젝트 세팅
- Today
- Total
여름 언덕에서 배운 것
서브쿼리 본문
코딩애플 온라인 강좌 - 개발자도 단기완성!
단연 NO1 강사님의 NO.1 강의 역시나 명강입니다. IT 업계의 대치동 NO1. 강사같은 엄청난 강의력. 코딩애플님의 강의는, 엄청나게 기초적인 것부터 가르치는 듯 보이지만, 실제로 다루는 깊이는 절
codingapple.com
서브쿼리는 필수 문법은 아니고 선택사항이다.
서브쿼리 = select 안에 select
순서는 서브쿼리 먼저 실행되고 그다음 전체쿼리문 실행
1.데이터 대신 서브쿼리 넣기 가능 -> 문자 나 숫자 들어가는 자리에만 가능
2.1개의 데이터만 뱉는 쿼리문만 가능하다! (평균금액,합계 막 여러개가 아니라 합계 딱 하나!)
3.소괄호 꼭 넣기
사용금액이 평균보다 높은 사람만 출력하려면?
1. 사용금액 평균 구하고 2.평균보다 큰 사람만 출력
귀찮으면 이 2개를 합치면 된다.
SELECT avg(사용금액) FROM card
SELECT * FROM card WHERE 사용금액>245000
서브쿼리
SELECT * FROM card
WHERE 사용금액>(SELECT avg(사용금액) FROM card)
SELECT 사용금액/245000 FROM card c
SELECT 사용금액/(SELECT avg(사용금액)FROM card) FROM card c
컬럼명 자리에 서브쿼리를 넣어도 실행이 잘된다.
문자 그대로가 출렫된다
이런 것들이 가능하다 정도만 알자
회원들 블랙리스트 만들어보자, 연체가 지속되는 회원들
블랙리스트 테이블을 만들고 이름 3개 넣고
블랙리스트에 있는 회원들의 사용금액
select 사용금액 from card where 고객명 in ('Pristine','George','Amy')
or 문법 여러개 안해도 된다
만약에 회원이 100명이면..?
in 안에도 서브쿼리 가능하다 , in 안에서는 예외적으로 여러개를 추출할 수 있다
🍎Q. 뭐여 문자나 숫자를 1개만 뱉는 SELECT문만 서브쿼리역할을 할 수 있다면서요
- IN() 안에선 예외임 ㅅㄱ
원래는 데이터 1개지만~ 사실 JOIN 문법 배우면 조인합시다
SELECT * FROM card c
WHERE 고객명 IN (SELECT 이름 FROM blacklist b)
(참고)🍎🍎
- 문자나 숫자 들어갈 곳에 서브쿼리를 대신 넣을 수 있습니다.
- 그래서 1개의 문자나 숫자를 뱉는 SELECT문만 서브쿼리로 넣을 수 있음
(여러개의 행을 뱉는 SELECT는 서브쿼리 역할을 할 수 없습니다)
- 서브쿼리 넣을 때 ( ) 소괄호 까먹으면 안됩니다.
문제
고객등급이 패밀리인 사람들의 평균 연체횟수"보다 연체횟수가 높은 사람은 몇명
내가 생각한 풀이
SELECT 연체횟수 FROM card WHERE 고객등급 = '패밀리'
SELECT avg(연체횟수) FROM card WHERE 고객등급 = '패밀리'
... 이걸 어떻게 합치지? ㅠ
답
SELECT count(*) FROM card
WHERE 연체횟수 > (SELECT avg(연체횟수) FROM card WHERE 고객등급 = '패밀리')
개인의 사용금액이 평균사용금액과 얼마나 차이가 나는지 출력
SELECT 고객명,사용금액,
(사용금액-(SELECT avg(사용금액)FROM card c )) AS DIFF
FROM card c2
'가랑비에 옷 젖는 줄 모른다 💻 > SQL & DB' 카테고리의 다른 글
IF/CASE (0) | 2023.07.28 |
---|---|
그룹그룹 GROUP BY 5인조가 좋음 (0) | 2023.07.28 |
컬럼으로 사칙연산, 문자데이터 다루기 (0) | 2023.07.27 |
집계함수로 통계내기, as 로 컬럼명 바꾸기,distinct 중복제거,limit (0) | 2023.07.27 |
like 와 % , _ 연산자 이용한 검색기능 (0) | 2023.07.27 |