SQL 28

[Lv.2] 가격대 별 상품 개수 구하기 [case when, between]

문제 파악출력할 컬럼 : 만원 단위의 가격대 별 상품 개수 ⇒ SELECT데이터를 가져올 테이블 : product ⇒ FROM조회 순서 : 가격대 기준 오름차순⇒ ORDER BY적용할 조건 : 만원 단위의 가격대 별로 숫자 집계 ⇒ Case when 문제 해결 과정 💡 Case when✅ 조건에 따라 구분하고 싶을 때 사용# + 등급 나누기SELECT U.USERID, U.NAME, SUM(B.PRICE*B.AMOUNT) AS `TOTAL_PRICE`, ## IF 문과 같이 WHEN 조건에 순차적으로 걸리고, # ELSE를 통해 나머지를 처리할 수 있다 CASE # WHEN 안에 별칭을 쓰면 실행이 안된다!! 이 멍청한...SQL.. WHEN( SUM(B.PRICE*B.AMOUNT) >=1..

[Lv.2] 재구매가 일어난 회원 리스트 [group by, having, count]

문제 파악출력할 컬럼 : 재구매한 회원 ID, 재구매한 상품 ID ⇒ SELECT데이터를 가져올 테이블 : ONLINE_SALE ⇒ FROM조회 순서 : 회원 ID 기준 오름차순, 같다면 상품 ID 기준 내림차순 ⇒ ORDER BY적용할 조건 : “동일한 회원”이 “동일한 상품”을 재구매한 데이터 count ⇒ COUNT 문제 해결 과정 💡 Group by, Having아래 글 참고!  동명 동물 수 찾기 [group by, having]문제 파악 출력할 컬럼 : 동물의 이름, 이름이 쓰인 횟수 ⇒ SELECT 데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM 조회 순서 : 이름 순 ⇒ ORDER BY 집계할 내용 : 이름이 없는 동물을 제외하고, 이름이 쓰seheehee.tistory.com..

[Lv.2] 중복 제거하기 [count, distinct]

문제 파악출력할 컬럼 : 동물 이름의 갯수 ⇒ SELECT데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM문제 조건 : 중복 누적 x, null값도 집계 x ⇒ ??? 문제 해결 과정 💡 Distinct✅ 중복되는 데이터가 있다면, 하나만 count (중복 제거해라!)SELECT DISTINCT 컬럼 FROM 테이블; ⚡ 주의사항⇒ MySQL에서는 DISTINCT 할 때 ( )의 의미가 없다. 한 개의 컬럼에만 적용하고 싶다면, GROUP BY를 사용########### DISTINCT ################# 이렇게 하면 의도하지 않은 결과가 출력될 것.SELECT DISTINCT (U.USERID), U.NAME, U.ADDR, B.PRODNAMEFROM BUYTBL B INNER ..

[Lv.2] NULL 처리하기 [ifnull, coalesce]

문제 파악출력할 컬럼 : ANIMAL_TYPE, NAME, SEX_UPON_INTAKE ⇒ SELECT데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM조회 순서 : ANIMAL_ID 순 ⇒ ORDER BY요구 조건 : 이름이 없는 동물의 이름은 "No name"으로 표시 NULL을 처리하는 여러 가지 방법 ✅ IFNULL format : IFNULL(컬럼명, 대체할 값)→ 해당 컬럼에 NULL이 있으면 대체할 값을 출력IFNULL(NAME, "No name") ✅ IFformat : IF(조건식, 두 번째 인자, 세 번째 인자)→ 만약, 조건식이 True 이면 두번째 인자를, false이면 세 번째 인자를 반환→ IF(컬럼명 is null then 대체할 값) : 만약 컬럼명이 null이면 대체..

[Lv.2] 동명 동물 수 찾기 [group by, having]

문제 파악출력할 컬럼 : 동물의 이름, 이름이 쓰인 횟수  ⇒ SELECT데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM조회 순서 : 이름 순 ⇒ ORDER BY집계할 내용 : 이름이 없는 동물을 제외하고, 이름이 쓰인 횟수 ⇒ COUNT()집계 기준 : 이름 ⇒ GROUP BY 문제 해결을 위한 쿼리 ✅ group by columns;하나하나의 데이터들을 모으는 작업으로 특정 컬럼을 기준으로 설정SELECT USERID AS 사용자 아이디, SUM(AMOUNT) AS 총 구매 건수 FROM BUYTBL GROUP BY USERID;  ✅ havinggroup by 내부의 where 절과 같이 필터링 조건을 설정해 준다SELECT USERID, SUM(PRICE*AMOUNT) 총구매금액..

[Lv.2] 이름에 el이 들어가는 동물 찾기 [where]

문제 파악출력할 컬럼 : 개의 아이디, 이름 ⇒ SELECT데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM조회 순서 : 이름 순 ⇒ ORDER BY적용할 조건 : 이름에 “EL”이 들어간다 ⇒ WHERE 문제 해결을 위한 쿼리문 ✅ where 데이터에 조건을 걸고 싶을 때 조건에 맞는 데이터만 선택하는 쿼리조건 문자열에 백틱을 사용하면 오류 난다WEHRE 구문에 여러 조건 지정하기 ⇒ AND와 OR로 조건 묶기WEHRE 구문에 범위를 조건으로 넣기 ⇒ BETWEENWEHRE 구문에 이산적인 값의 조건 넣기 ⇒ INWEHRE 구문에 문자열 내용 검색 조건 넣기 ⇒ %, _  ✅ LIKEWHERE 절에서 주로 사용되며, 문자열의 부분일치 여부를 확인할 때 사용% : 무엇이든 허용_ : 한 글자와 ..

[Lv.1] 여러 기준으로 정렬하기 [select, order by desc]

문제 파악  출력할 컬럼 : ANIMAL_ID, NAME, DATETIME    ⇒ SELECT데이터를 가져올 테이블 : ANIMAL_INS    ⇒ FROM조회 순서 : NAME, DATETIME 내림차순    ⇒ ORDER BY 문제 해결을 위한 쿼리문  ✅ select columns from databases; 데이터 베이스로 부터 특정 컬럼을 선택한다 ⇒ column 조건걸기‘ * ‘ 는 모든 데이터 출력을 의미한다혹은 열 이름을 나열하여 출력하고 싶은 열만 출력할 수 있다 ✅ order by columns; 컬럼을 조회할 때 조건을 걸기ASC(ASCENDING) - 오름차순 정렬DESC(DESCENDING) - 내림차순 정렬정렬 조건 여러 개 나열 가능 ⇒ 먼저 작성된 컬럼대로 정렬하고, 정렬 ..

[Lv.1] 동물의 아이디와 이름 [select, order by]

문제 파악출력할 컬럼 : ANIMAL_ID, NAME    ⇒ SELECT데이터를 가져올 테이블 : ANIMAL_INS    ⇒ FROM조회 순서 : ANIMAL_ID    ⇒ ORDER BY 문제 해결을 위한 쿼리문   ✅ select columns from databases; 데이터 베이스로 부터 특정 컬럼을 선택한다 ⇒ column 조건걸기‘ * ‘ 는 모든 데이터 출력을 의미한다혹은 열 이름을 나열하여 출력하고 싶은 열만 출력할 수 있다 ✅ order by columns; 컬럼을 조회할 때 조건을 걸기ASC(ASCENDING) - 오름차순 정렬DESC(DESCENDING) - 내림차순 정렬정렬 조건 여러 개 나열 가능 ⇒ 먼저 작성된 컬럼대로 정렬하고, 정렬 순서가 동일하면 이후 작성된 컬럼대로 ..