DB

· DB/SQL
✅문제 https://school.programmers.co.kr/learn/courses/30/lessons/131532 ✅풀이 [나의 풀이] 1. 두 테이블을 USER_ID 기준으로 조인한 후, 성별이 null이 아닌 것만 조회 2. 이후 SALES_DATE를 년 기준으로, 같다면 월기준으로, 같다면 성별 기준으로 그룹화하여 중복 삭제하면서 3. USER_ID를 카운트 한다. 이때 같은 년,월에 중복되는 USER_ID가 있다면 카운트 제외 4. 이후 년,원,성별 순으로 카운트 SELECT YEAR(O.SALES_DATE) as YEAR, MONTH(O.SALES_DATE) as MONTH , U.GENDER, count(distinct U.USER_ID ) as USERS from USER_INFO ..
· DB/SQL
✅ 문제 https://school.programmers.co.kr/learn/courses/30/lessons/62284 ✅ 풀이 [나의 풀이] SubQuery - 인라인뷰 방식(from절에 서브쿼리 사용) 1. NAME이 yogurt인 것만 조회한 테이블(Y)을 만든다. 2. NAME이 milk인 것만 조회한 테이블(M)을 만든다. 3. 두 테이블 간에 card_id가 같은 것을 조건으로 조인한다. 4. 조인된 테이블에서 cart_id값 조회 => 인라인뷰로 테이블을 두개를 따로 만들었는데, 하나의 서브쿼리로도 충분히 계산할 수 있기 때문에 비효율적인 코드라 생각됨. select M.CART_ID from (SELECT * from CART_PRODUCTS where NAME = 'Yogurt') Y..
· DB/SQL
sql문에서 변수를 크게 3가지로 나눌 수 있다. 1. 사용자 정의 변수 2. 지역 변수 3.시스템 변수 (아직 사용자 정의 변수만 공부함.) [Mysql] 사용자 정의 변수 : Mysql워크벤치가 종료되면 변수 선언이 없어짐. 변수는 임시로 사용되는 될 뿐임. 1. 기본 형태 SET @변수명 = 변수값; -- 변수 선업 SELECT @변수명; -- 변수 사용 2. 예제 -- 변수 선언 set @var1 = 5; set @var2 = 4.25; -- 변수 사용 select @var1 -- 5; select @var1 + @var2; -- 9.250000000000000000000000000000; -- 변수 선언 set @txt = '가수 이름은? : '; set @height = 165; -- 변수 사..
· DB/SQL
정수형 1. 종류 TINYINT(1바이트) : -128~127 범위의 숫자를 표현할 수 있다. SMALLINT(2바이트) : -32768~32767 INT(4바이트) : 약-21억 ~ 21억 BIGINT(8바이트) : 약 -900경 ~ 900경 CREATE table numbers( tinyint_col TINYINT, -- -128~127 범위의 숫자를 표현할 수 있다. smallint_col SMALLINT, -- -32768~32767 int_col INT, -- 약-21억 ~ 21억 bigint_col BIGINT -- 약 -900경 ~ 900경 ); -- 입력가능한 최대 숫자 크기 INSERT INTO numbers VALUES(127,32767,2147483647,9000000000000000..
· DB/SQL
[문제] https://school.programmers.co.kr/learn/courses/30/lessons/157342 [풀이] 1. CAR_ID와 각 행별 대여기간을 구한 인라인 뷰 테이블을 만든다. (from 절에서 서브쿼리) 2. 이후 group by로 car_id별로 묶은 후 평균 대여일을 구하는데 3. 그 결과에서 having으로 7일 이상인 데이터만 필터한다. 4. select문에서 그 평균 값을 ROUND로 반올림 해주고 5. 정렬해준다. select CAR_ID, ROUND(AVG(dif),1) as AVERAGE_DURATION from (select CAR_ID, (datediff(END_DATE,START_DATE)+1) as dif from CAR_RENTAL_COMPANY_R..
· DB/SQL
DB , Table 생성하기 데이터베이스 개체 : 테이블 인덱스, 뷰, 스토어 프로시저 - 개체 생성시 : create ~~ - 개체 삭제시 :drop ✔️ DB 생성, 테이블 생성 DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다. CREATE DATABASE market_db; -- market_db라는 데이터베이스 생성 USE market_db; -- db명 더블클릭 한 것과 같음. ✔️ 테이블 생성 CREATE TABLE member -- member 테이블 생성 ( mem_id CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK) mem_name VARCHAR(10) NOT NULL, -- 이름 mem_..
· DB/SQL
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131123 FOOD_TYPE 별 좋아요 수가 젤 많은 행 한건만 출력해야 함. - FOOD_TYPE별로 그룹화 한 후, having에 max 조건을 걸어 좋아요수가 젤 많은 음식점 한건만 출력하려 했음. - 문제 : 단순히 젤 첫번째 FOOD_TYPE 행만 나오고, max 요건은 따지지 않음. - 이유 : having은 group by에서 집계한 결과물에서 단순히 filter하는 역할이다. 때문에 max()를 이용해 새로운 연산을 할 수 없다. : having 뒤에는 조건이 나와야 하는데 이건 단순히 max함수를 실행해서 값을 조회한 것이기 때문에, 이건 조건문이 아니다! 만일 having ..
· DB/SQL
✅ JOIN 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것 두 테이블의 조인을 위해서는 기본키(PRIMARY KEY, PK)와 외래키(FOREIGN KEY, FK) 관계로 맺어져야 한다. (때문에 on 조인 조건에는 기본기 = 외래키 연결짓는 로직이 들어가야 되는 것임!) ✅ 종류 1. INNER JOIN(내부 조인) : 두 테이블을 조인할 때, 두 테이블에 모두 데이터가 있어야만 결과가 나온다. 2. OUTER JOIN(외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. 3. CROSS JOIN(상호 조인) : 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다. 4. SELF JOIN(자체 조인) : 자신이 자신과 조인한다는 의..
· DB/SQL
✅ Group by 데이터를 컬럼별로 그룹화 해주는 역할 주로 집계 함수와 같이 사용되곤 한다 NULL 값을 가진 행을 제외하고 수행한다. [형태] SELECT FROM WHERE GROUP BY HAVING [예제] 회원별로 묶어준 후, 구매한 개수 합치기 select mem_id,count(mem_id) from buy group by mem_id; [예제] 프로그래머스 - 고양이와 개는 몇 마리 있을까 : ANIMAL_INS 테이블에서 ANIMAL_TYPE 컬럼을 기준으로 유형을 분류하는데, 이때 고양이와 개의 수를 카운팅한다. select ANIMAL_TYPE, count(ANIMAL_TYPE) as count from ANIMAL_INS group by ANIMAL_TYPE [예제] 프로그래머스..
· DB/SQL
- 서브쿼리는 메인쿼리(외부쿼리)의 칼럼을 모두 사용할 수 있음 - 메인쿼리(외부쿼리)는 서브쿼리의 칼럼을 사용할 수 없음 - 서브쿼리는 소괄호로 감싸서 사용 서브쿼리에서는 ORDER BY 절을 사용하지 못하고, 메인쿼리 마지막 문장에 사용 가능 스칼라 서브쿼리(Scalar Sub Query): 하나의 컬럼처럼 사용 (표현 용도) FROM (SELECT ...) -- 인라인 뷰(Inline View): 하나의 테이블처럼 사용 (테이블 대체 용도) WHERE col = (SELECT ...) -- 일반 서브쿼리: 하나의 변수(상수)처럼 사용 (서브쿼리의 결과에 따라 달라지는 조건절)Copy 1. 중첩 서브쿼리( Nested Subquery ) (일반 서브쿼리) where문에서 사용하는 서브쿼리. 예제1) ..
journey-dev
'DB' 카테고리의 글 목록