Banner

My Tech Blog (sqld)

오늘의 명언
1. 문제설명 2. 접근방식 먼저 FISH_INFO 테이블이랑 FISH_NAME_INFO 테이블을 FISH_TYPE 컬럼으로 조인 해 준다. 그리고 FISH_NAME으로 GROUP BY 해 주고, LENGTH의 MAX 값을 구해주면 된다고 생각 했다. 🙅🏻‍♀️첫번째 시도(실패) 일단 이게 내가 처음에 생각했던 쿼리이다. 바로 구문 오류가 떴다. GROUP BY절에 집계되지 않은 컬럼 A.ID가 있다고 하는 오류 메세지가 떴다. 현재 GROUP BY 절에 B.FISH_NAME만 있고, A.ID는 GROUP BY에 포함되지 않아서 오류가 발생한 것이다. ORDER BY에 A.ID를 사용할 때, 그 열이 GROUP BY 절에 포함되어 있지 않으면 결과가 예기치 않게 나타날 수 있다고 한다. 그래서 GROUP..
1. 문제설명 2. 접근방식 & 정답코드 문제만 읽어도 아이템이 상위 아이템으로 업그레이드 될 수 있는 걸 보니, 계층구조를 가지고 있다고 보여진다. 1. 먼저 ITEM_INFO테이블에서 RARITY 가 'RARE'인 아이템들의 ITEM_ID 값을 찾는다.2. ITEM_INFO 테이블의 ITEM_ID랑 ITEM_TREE의 PARENT_ITEM_ID가 같다는 조건으로 ITEM_INFO와 ITEM TREE 테이블을 조인했다. WHERE 절에 1조건을 달아서 ITEM_TREE.PARENT_ITEM_ID가 1조건 에 해당하는지 찾아 준다.   계속 틀린다....ㅋㅋㅋㅋㅋㅋㅋㅋ아이고 머리야  🐦 JOIN 1번 하는 정답코드SELECT ITEM_INFO.ITEM_ID, ITEM_INFO.ITEM_NAME, ITE..
너무 쉬워서 굳이 블로그에 안 올리려다가 코드만 올립니다.프로그래머스 > 코딩테스트 연습 > 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. 잡은 물고기 중 가장 큰 물고..
1. 문제설명 2. 접근방식 & 정답코드SELF JOIN으로 부모-자식 관계를 동일한 테이블 내에서 조인해서 풀어주자.하나의 테이블에 ALIAS를 줘서 마치 두 개의 테이블이 있는 것처럼 두 번 참조하는 것이다.  내가 알고 있는 가장 일반적인 SELF JOIN 예시는 직원별 매니저를 나타낸 1개의 테이블을 자기자신과 조인하는 것이다. 또 계층쿼리에서도 SELF JOIN이 많이 쓰인다. 이 문제에서도 하나의 테이블에 부모의 아이디와 자식의 아이디, 개체의 형질(GENOTYPE)이 모두 들어 있다. 부모의 테이블은 P로, 자식의 테이블은 그냥 A라고 별칭을 준 뒤 자식테이블의 PARENT_ID컬럼을 부모 테이블의 ID 값으로 조인 한다. 그 후 WHERE 절에 `A.GENOTYPE & P.GENOTYPE ..
1. 문제설명 2. 접근 방법 & 정답코드`GENOTYPE`을 이진수로 변환한 값의 `각 자릿수`가 `보유한 형질`을 나타내므로비트연산을 해 주어야 하는 문제라는 걸 알 수 있다 !  SELECT COUNT(*) AS COUNTFROM ECOLI_DATA AWHERE 1=1      AND (GENOTYPE & 2) != 2       AND ((GENOTYPE & 4) = 4 OR (GENOTYPE & 1) = 1) 이 문제는 WHERE절 작성하기가 조금 어려울 수 있기 때문에 하나씩 차근 차근 설명을 해 보겠다. 먼저 비트연산이란 걸 모르면 이해가 어려울 수 있기 때문에 비트연산 먼저 알아보자.비트연산이란?비트 연산은 숫자를 이진수 형태로 변환하여 각 비트를 기준으로 연산을 수행하는 방식이다. 프로그..
🐦문제설명 처음에는 복잡하게 생각해서 문제를 풀지 못했다. 나는 `두 테이블을 조인을 해야 하는데 조인 조건을 어떻게 주지?` 이렇게 생각을 하고 문제에 접근했다. 결론부터 말하면 조인을 할 수 없다.이건 서브쿼리로 푸는 문제였다. 나는 처음에 이 문제가 자바 알고리즘 코딩테스트처럼 느껴졌다. 왜냐하면 내가 직접 이진수 계산을 하는 로직을 짜야 하는건가? 라는 생각을 했기 때문이다.자리수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값이..
상단으로