SQL

    [MySQL] 프로그래머스 문제 풀이 (식품분류별 가장 비싼 식품의 정보 조회하기)

    [MySQL] 프로그래머스 문제 풀이 (식품분류별 가장 비싼 식품의 정보 조회하기)

    테이블에 대한 설명과 문제가 나와있습니다.얼핏 보면 쉬운 문제 같지만, 계속 틀렸다고 나와서 머리가 아팠던 문제입니다 🥺 처음 작성한 쿼리SELECT CATEGORY, MAX(PRICE) AS MAX_PRICE, PRODUCT_NAMEFROM FOOD_PRODUCTWHERE CATEGORY IN ('식용유', '과자', '국', '김치')GROUP BY CATEGORYORDER BY MAX(PRICE) DESC; 쿼리에 대한 결괏값 (오답값) 무엇이 틀렸는지 한 번 확인해 볼게요.우선, 아래는 아무런 CATEGORY만 필터링하고 다른 조건은 아무것도 주지 않은 결괏값이에요.그리고 빨간색 네모박스들만 출력되면 정답인 샘이죠. 무엇이 틀렸는지 감이 오시나요? 추출되어야 할 결괏값과 제가 짠 쿼리에 대한 결..

    [MySQL] 프로그래머스 문제 풀이 (feat. GROUP_CONCAT, INTERSECT 활용)

    [MySQL] 프로그래머스 문제 풀이 (feat. GROUP_CONCAT, INTERSECT 활용)

    테이블에 대한 설명과 문제가 나와있습니다. 문제를 풀면서 'GROUP_CONCAT'과 'INTERSECT'를 공부해 볼게요. 첫 번째, 'GROUP_CONCAT' 활용 과정 SELECT CART_ID, NAME FROM CART_PRODUCTS; 우선 전체적인 테이블 결과를 보기 위해 기본 쿼리를 작성하면, 아래처럼 기본 형태가 나오게 돼요. 이제 여기서 장바구니 (CART_ID)에 'MILK'와 'YOGURT'를 동시에 담은 사람을 출력하면 됩니다. 그래서 첫 번째로 든 접근 방법은 NAME을 GROUP_CONCAT해서 묶어주는 거예요. GROUP_CONCAT에 대한 자세한 설명은 아래 링크를 통해 알 수 있어요. https://wnwa.tistory.com/34 [MySQL] 조건에 맞는 값들을 묶어..

    [MySQL] HackerRank Pivot Table 문제 (CASE문, SET, 서브쿼리 활용)

    [MySQL] HackerRank Pivot Table 문제 (CASE문, SET, 서브쿼리 활용)

    문제 출처 https://www.hackerrank.com/challenges/occupations/problem?isFullScreen=true&h_r=next-challenge&h_v=zen Occupations | HackerRank Pivot the Occupation column so the Name of each person in OCCUPATIONS is displayed underneath their respective Occupation. www.hackerrank.com 문제 설명 OCCUPATIONS 테이블은 Name, Occupation 두 column으로 이루어진 테이블이에요. 문제는 Occupation 칼럼에 있는 4가지 직업 (Doctor, Professor, Singer, A..

    [MySQL] SET을 통해 변수 사용하기

    변수 활용 방법 SET @변수명 = 변수값; 변수 출력 방법 SELECT @변수명; 변수 활용 예시 변수 설정 SET @num1 = 5; SET @num2 = 4; SET @txt = '초이' 변수 출력 및 활용 SELECT @num1 + @num2; 결괏값: 9 SELECT @txt; 결괏값: 초이 주의사항 ! > SELECT 안에서 변수를 설정하는 경우에는 '@변수명 = 변수값'이 아니라, '@변수명 := 변수값'이예요. * SET 명령어 외에 =는 비교연산자로 활용되기 때문에 SELECT에 변수를 선언하고 값을 대입할 때에는 :=를 사용해줘야 해요. SELECT @num1 = 10; 결괏값: Null SELECT @num := 10; 결괏값: 10

    [MySQL] 기본키, 외래키 값 변경에 대하여 (feat. on update cascade)

    [MySQL] 기본키, 외래키 값 변경에 대하여 (feat. on update cascade)

    테이블 생성하기 -- member1 table create table member1 ( name_id int not null auto_increment, name char(6), primary key(name_id) ); -- buy1 table create table buy1 ( buy_id int not null auto_increment, product char(10), name_id int, primary key(buy_id) ); 데이터 넣기 -- member table insert into member1 values (null,'CHOI'), (null,'KIM'); -- buy table insert into buy1 values (null,'노트북', 1), (null,'폰',2); 테이블..

    [MySQL] 컬럼명 변경 / 컬럼 타입 및 디폴트값 변경 / 컬럼 삭제 및 추가 (예시로 쉽게)

    - 칼럼명 변경하는 방법 > 기본 구조 ALTER TABLE 테이블명 CHANGE 변경 전이름 변경 후이름 칼럼타입; * 주의사항 not null이나 default 그리고 제약조건이 있는 칼럼의 이름을 변경할 때, 칼럼타입까지만 입력해주면 뒤에 설정한 값들이 초기화되고 컬럼타입만 유지가 됩니다. 예시를 통해 보시죠. 주의사항 예시 -- 컬럼명 변경 전 create table test( name_id int not null default 1 ); -- name_id를 user_id로 변경하기 alter test change name_id uesr_id int; 결괏값: uesr_id int -- 기존에 있던 not null과 default값은 초기화 그렇기 때문에 이름변경할 때 설정한 값들을 유지하고 싶다..

    [MySQL] IF문 예제로 쉽게 알아보기

    IF문 기본 형식 > IF(조건식, True일 때 반환값, False일 때 반환값) SELECT IF(1 > 0, "참이네?", "거짓이네?"); 결괏값: "참이네?" SELECT IF(1 < 0, "참이네?", "거짓이네?"); 결괏값: "거짓이네?" -- 실제 테이블에 적용할 때 예시 SELECT IF(name = 'choi', "초이가 맞다", "초이가 아니다") AS "이름 맞추기" FROM USER;

    [MySQL] DATE 선택, 가공, 차이, 디폴트 (DATE_FORMAT, DATEDIFF, CURRNT, NOW)

    우선 알아야 할 것들 YEAR (%y): 연도 MONTH (%m): 월 DAY (%d): 일 HOUR (%H): 시 MINUTE (%i): 분 SECOND (%s): 초 DATETIME에서 원하는 것만 선택하는 방법 > 기본 형식 SELECT YEAR(DATETIME); SELECT YEAR("2023-03-17 14:17:59"); 결괏값: 2023 SELECT MONTH("2023-03-17 14:17:59"); 결괏값: 3 SELECT SECOND("2023-03-17 14:17:59"); 결괏값: 59 DATETIME을 원하는 대로 출력하는 방법 > 기본 형식 SELECT DATE_FORMAT(DATETIME, "원하는 형식"); SELECT DATE_FORMAT("2023-03-17 14:17:..

    [MySQL] AUTO_INCREMENT로 자동으로 숫자를 증가시키기

    [MySQL] AUTO_INCREMENT로 자동으로 숫자를 증가시키기

    AUTO_INCREMENT는 자동으로 숫자를 입력해 준다는 의미입니다. 순번은 직접 입력할 필요 없이 1, 2, 3, ... 과 같은 방식으로 1부터 자동으로 증가합니다. 사용할 때 주의사항! AUTO_INCREMENT를 지정하는 열에는 꼭 PRIMARY KEY (기본키)로 지정해줘야 합니다. 생성 및 입력 예시 -- AUTO_INCREMENT 적용하기 CREATE TABLE TEST1 (ID INT AUTO_INCREMENT PRIMARY KEY, ID_NAME VARCHAR(10) ); -- 입력하는 방법 INSERT INTO TEST1 VALUES(NULL, 'CHOI'); INSERT INTO TEST1 VALUES(DEFAULT, 'JUN'); > AUTO_INCREMENT가 적용된 컬럼에 값을..

    [MySQL] 원하는 문자열 기준으로 자르는 방법 SUBSTRING_INDEX()

    함수 기본 형태 SUBSTRING_INDEX(전체 문자열, 자르는 기준, 기준 인덱스) 활용 예시 1) 'A, B, C, D, E' 문자열에서 C까지만 출력하기 SELECT SUBSTRING_INDEX('A, B, C, D, E', ',', 3); 결괏값: 'A, B, C' > 기준 인덱스을 3으로 설정해준 이유는 C 뒤에 있는 콤마(,)가 세 번째 콤마를 의미하고 이를 기준으로 문자열이 잘리기 때문이에요. 2) 'A, B, C, D, E' 문자열에서 E만 출력하기 SELECT SUBSTRING_INDEX('A, B, C, D, E', ',', -1); 결괏값: 'E' > 기준 인덱스를 -1로 설정해주면 어떻게 될까요? -1는 문자열에서 가장 마지막 콤마(,)를 의미하기 때문에 뒤에서 가장 첫 번째인 E..