SQL/ORACLE(8)
-
[프로그래머스 / ORACLE] 카테고리 별 상품 개수 구하기
내 코드 SELECT SUBSTR(PRODUCT_CODE, 1, 2) CATEGORY, COUNT(*) PRODUCTS FROM PRODUCT GROUP BY SUBSTR(PRODUCT_CODE, 1, 2) ORDER BY 1 느낀점 회사에서는 MSSQL을 쓰지만 프로그래머스에는 MSSQL이 없어서 ORACLE을 쓰는데 가끔 이런 함수이용하는 문제들이 나오면 주춤한다. MSSQL에는 LEFT함수가 있지만 ORACLE에는 없기때문이다. 다양한 SQL언어를 사용하면서 이런 차이점들을 알아가는게 신기하기도 하고 불편하기도 하다. 하지만 용어가 다를뿐인지 기본 개념은 비슷비슷하기 때문에 혼란스럽지는 않다.
2023.12.29 -
[ORACLE] COUNT()함수에 대하여
SELECT COUNT(*), COUNT(칼럼명), COUNT(DISTINCT 칼럼명) FROM 테이블 1. COUNT(*) : 전체 데이터의 개수를 반환 2. COUNT(칼럼명) : 칼럼명의 데이터 중 NULL 값을 제외한 개수를 반환 3. COUNT(DISTINCT 칼럼명) : 칼럼명의 데이터 중 중복을 제거하고 데이터 개수 반환 #GROUP BY로 묶은 데이터들의 각 개수를 구하고 싶을 때 SELECT 칼럼명, COUNT(칼럼명) FROM 테이블 GROUP BY 칼럼명 #COUNT함수 안에 CASE WHEN 을 사용하여 데이터를 원하는 대로 뽑을 수도 있다. 이 경우는 아직 해보지 않았기 때문에 어떤방식으로 사용하지 잘 모르겠다.
2023.10.22 -
[프로그래머스/ORACLE] 동명 동물 수 찾기(GROUP BY 로 묶은 데이터의 각 개수 구하기)
내코드 -- 코드를 입력하세요 SELECT NAME, COUNT(NAME) FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >1 ORDER BY NAME 느낀점 COUNT함수는 어렵다.. 내가 아는 함수라 하더라도 아직 모르는게 많구나.. 이번 문제는 GROUP BY 로 묶은 데이터들의 각 개수를 구하는 문제였다. COUNT는 집계함수라서 HAVING에서 써야한다고 한다. WHERE에서는 사용할 수 없다. 총 개수를 구하기 위해서는 -- 코드를 입력하세요 SELECT COUNT(*) FROM ( SELECT NAME, COUNT(NAME) FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >1 ) 이런식으로 작성하면 된다.
2023.10.22 -
[프로그래머스 / ORACLE] 상위 n개 레코드 (날짜의 MIN, MAX 값 구하기)
-- 코드를 입력하세요 SELECT NAME FROM ANIMAL_INS WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS) 내코드 느낀점 이번 문제는 날짜의 MAX, MIN값을 구하는 문제이다. 아직까지 코딩하면서 이런 값을 구해본적이 없어 신선한 문제였다. 바로 MIN과 MAX함수를 떠오르긴했으나 날짜비교에도 MIN과 MAX함수를 사용하는지 몰랐기에 반신반의하며 풀었던 문제이다. 제대로 찾아보니 날짜에도 MIN과 MAX함수를 사용하여 값을 구할 수 있다고 한다.
2023.10.22 -
[프로그래머스 / ORACLE] 오랜 기간 보호한 동물(1)
내코드 --1 SELECT * FROM ( SELECT A.NAME, A.DATETIME FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE B.ANIMAL_ID IS NULL ORDER BY A.DATETIME) T WHERE ROWNUM
2023.10.19 -
[프로그래머스/ORACLE] 12세 이하인 여자 환자 목록 출력하기
내코드 SELECT PT_NAME, PT_NO, GEND_CD, AGE, NVL(TLNO, 'NONE') AS TLNO FROM PATIENT WHERE AGE
2023.10.19