너무 쉬워서 굳이 블로그에 안 올리려다가 코드만 올립니다.프로그래머스 > 코딩테스트 연습 > SLQ > `SUM, MAX, MIN`카테고리에 있는 문제들입니다. 그냥 한 눈에 보고 바로 풀 수 있는 5초컷 문제들은한 포스팅 내에 여러 개 묶어서 올리는 것이니 구체적인 설명이 필요하시거나 궁금한 점은 댓글로 부탁드립니다.확인하는 대로 답 드립니다. 1. 가장 비싼 상품 구하기 MAX()SELECT MAX(PRICE) AS MAX_PRICEFROM PRODUCT 풀어서 쓰는 코드SELECT PRICE AS MAX_PRICEFROM PRODUCTORDER BY PRICE DESCLIMIT 1;2. 최댓값 구하기 SELECT MAX(DATETIME)FROM ANIMAL_INS;3. 잡은 물고기 중 가장 큰 물고..
My Tech Blog (MySQL)
1. 문제설명 2. 접근방식 & 정답코드SELF JOIN으로 부모-자식 관계를 동일한 테이블 내에서 조인해서 풀어주자.하나의 테이블에 ALIAS를 줘서 마치 두 개의 테이블이 있는 것처럼 두 번 참조하는 것이다. 내가 알고 있는 가장 일반적인 SELF JOIN 예시는 직원별 매니저를 나타낸 1개의 테이블을 자기자신과 조인하는 것이다. 또 계층쿼리에서도 SELF JOIN이 많이 쓰인다. 이 문제에서도 하나의 테이블에 부모의 아이디와 자식의 아이디, 개체의 형질(GENOTYPE)이 모두 들어 있다. 부모의 테이블은 P로, 자식의 테이블은 그냥 A라고 별칭을 준 뒤 자식테이블의 PARENT_ID컬럼을 부모 테이블의 ID 값으로 조인 한다. 그 후 WHERE 절에 `A.GENOTYPE & P.GENOTYPE ..
🐦문제설명 처음에는 복잡하게 생각해서 문제를 풀지 못했다. 나는 `두 테이블을 조인을 해야 하는데 조인 조건을 어떻게 주지?` 이렇게 생각을 하고 문제에 접근했다. 결론부터 말하면 조인을 할 수 없다.이건 서브쿼리로 푸는 문제였다. 나는 처음에 이 문제가 자바 알고리즘 코딩테스트처럼 느껴졌다. 왜냐하면 내가 직접 이진수 계산을 하는 로직을 짜야 하는건가? 라는 생각을 했기 때문이다.자리수2561286432168421이진수110010000 십진수를 이진수로 바꾸는 `BIN(SKILL_CODE)` 함수 써서 CODE 컬럼이랑 맞춰볼까 생각했는데 어떻게 해야 좋을 지 쉽게 생각이 나지 않았다. 그 후에 `SUBSTRING(BIN(SKILL_CODE),?,?)` 이런 식으로 값을 잘라 줘야 하나 생각도 해 봤..
🐠 가장 큰 물고기 10마리 구하기 가장 큰 물고기 10마리를 선택하라고 했으니까, ROWNUM을써야 한다. 하지만 ROWNUM은 Oracle에만 있는 문법이고, MySQL에서는 LIMIT 키워드로 같은 기능을 수행한다. 주의할 점, ROWNUM / LIMIT 은 서브쿼리(subquery)와 함께 사용해야 한다. 서브쿼리를 안 쓰면 WHERE절이 SELECT절보다 먼저 수행되어 원하는 값이 나오지 않는다. 길이가 큰 순으로 10개를 가져와야 하는데, 길이와 상관 없이 랜덤한 값 10개가 선택되는 것이다. 이것은 SQL문의 실행순서 때문이다. SQL의 실행 순서FROM - WHERE(ROWNUM 실행) - GROUP BY - HAVING - SELECT - ORDER BY LENGTH를 큰 값부터 정..
쉬운 문제는 한 번에 두 세개씩 포스팅 하려고 했는데이 문제는 생각 해 볼 여지가 많기 때문에 하나만 올린다.논란의 여지가 있고 많은 의문이 제기되는 문제인데 같은 고민을 하신 분들께 이 문제와 관련해서 내가 생각해보고 조사한 내용을 공유를 해보고자한다. 내가 궁금했던 점은 아래 두 가지였다. - "LENGTH 에 NULL 만 있는 경우는 없습니다"라는 조건은 왜 필요한 것인가요?- 왜 테스트 케이스 2만 실패가 뜨는 것인가요? 내지 10cm 이하인데 왜 정답코드에서는 ` 이 포스팅에 대해서는 위 질문들에 대해 명쾌한 해답을 할 것이다첫번째 질문은 문제를 자세히 읽고 생각해보니 답을 찾을 수 있었고 두번째 질문은 다른 사람의 설명을 참고했다. 🐠 잔챙이 잡은 수 구하기 LENGTH 컬럼에 NULL값이..
📑 모든 레코드 조회하기10초컷 문제SELECT *FROM ANIMAL_INSORDER BY ANIMAL_ID; 🐦 조건에 맞는 회원수 구하기SELECT COUNT(*)FROM USER_INFOWHERE YEAR(JOINED) = '2021' AND AGE BETWEEN 20 AND 29;💻 Python 개발자 찾기 보통 쌩초보들이 푸는 방법SELECT ID, EMAIL, FIRST_NAME, LAST_NAMEFROM DEVELOPER_INFOSWHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python'ORDER BY ID; 한 번 생각 해 보고 풀면 이렇게 ㅎㅎㅎSELECT ID, EMAIL, FIRST_NAME, L..
📚조건에 맞는 도서 리스트 출력하기 아래는 정답처리 되는 모두 동일한 코드이다 BETWEEN 연산자로 풀기SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOKWHERE PUBLISHED_DATE BETWEEN '20210101' AND '20211231' AND CATEGORY LIKE '인문'ORDER BY PUBLISHED_DATE; ⭐⭐⭐YEAR() 함수로 풀기 (제일 간단한 코드)SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOKWHERE YEAR(PUBLISHED_DATE) = 2021 ..
🍦 인기 있는 아이스크림 너무 쉬워서 설명할 것도 없다...SELECT FLAVORFROM FIRST_HALFORDER BY TOTAL_ORDER DESC, SHIPMENT_ID; 🏭 강원도에 위치한 생산공장 목록 출력하기SELECT FACTORY_ID, FACTORY_NAME, ADDRESSFROM FOOD_FACTORYWHERE ADDRESS LIKE '강원도%'ORDER BY FACTORY_ID;👩🏻👧🏻👧🏻 12세 이하인 여자 환자 목록 출력하기 SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO,'NONE') AS TLNOFROM PATIENTWHERE AGE * SELECT절에 함수 수행하면 컬럼명이 함수명으로 나오므로 ALIAS 붙여주는거..