목록SQL (15)
Coding Planet
✨ 문제 💻코드 👩💻 풀이 방법 INNER JOIN을 사용해서 REST_ID를 기준으로 표를 결합했다. 집합함수로 평균을 구하고 ROUND로 반올림을 했다 -> 반올림 함수의 '2', 숫자는 소수점 3번째 자리에서 반올림해 2자리를 남긴다는 의미이다. 🔔 느낀점 ORA-00937: not a single-group group function 오류가 한번 발생했다. 집계함수를 사용했기 때문에 GROUP BY절을 만들어야하는데 원칙상 SELECT 절에 들어간 모든 컬럼을 기재했어야 하지만 집계합수가 사용된 REVIEW만 적어서 발생한 오류이다.
✨ 문제 💻SQL 👩💻 풀이 방법 서브쿼리가 FROM 절 안에서 사용되는 경우 해당 서브쿼리를 '인라인뷰'라고 한다. 처음 문제를 분석할 때는 서브쿼리를 사용하는 것이 아니라 ONLINE_SALE과 OFFLINE_SALE을 각자 SELECT문으로 만들고 UNION ALL을 하거나 조인을 사용하는 방법을 생각했다. 그렇지만 문제의 의도를 전체적으로 보여주기 위해서는 인라뷰인뷰 형식으로 하는 것이 깔끔하여 가독성이 높다고 생각했다. OFFLINE_SALE에는 USER_ID 컬럼이 존재하지 않기 때문에 SELECT절에 NULL로 지정했다. 🔔 느낀점 프로그래머스에서 문제를 풀 때 코드를 작성하는 것보다 문제의 의도를 파악하고 쿼리를 설계하는 것이 더 중요하다는 생각이 들었다. 현재 초보적인 수준에서 연습하고..
✨ 문제 💻SQL 👩💻 풀이 방법 GROUP BY절은 데이터들을 원하는 그룹으로 나눌 수 있다. USER_ID 별, PRODUCT_ID별로 재구매 데이터를 요구했으므로 이 두 컬럼을 기준으로 그룹화 한다. 사실 GROUP BY와 DISTINCT는 ORACLE 10G 이후로 HASH를 이용해 데이터를 처리하므로 기능적으로는 동일하다. 하지만 집계함수와 사용할 경우 GROUP BY절을 이용하는 것이 적절하다. WHERE 절에서는 집계함수를 사용해 줄 수 없기 때문에 HAVING절을 통해 집계함수를 통해 조건비교를 해야한다. HAVING절은 GROUP BY절과 함꼐 사용된다. 🔔 느낀점 GROUP BY를 통해 중복을 제거하여 그룹핑을 하고 HAVING절을 이용해 조건비교를 하는 기본적인 문제이다.
Java, data modeling에서 심심치 않게 등장하는 Mapping 매번 어림짐작하고 넘어갔는데 그 의미를 나름대로 공부하며 정리하고자 한다 1. 수학적 개념 함수와 비슷하지만 함수를 일반화한 개념이다. 함수와 마찬가지로 두 집합 X, Y가 존재할 때 집합 X의 각원소 x를 집합 Y의 하나의 원소 y로 대응시키는 관계를 말한다. 대응, 변환 또는 함수라고 한다. 깊게 들어가면 대응, 변환, 함수, 사상을 구분하여 관습적으로 사용하는 것 같은데 이 부분은 정확히 이해하기는 어려우므로 좀 더 일반화된 형태의 함수라고 이해하고 넘어간다. 2. 자바에서의 Mapping 처음 Map이라는 개념을 자바에서 공부할 때 당연히 '지도'라고 생각했다. 그러나 자바의 자료구조를 공부할수록 Map의 형태는 지도처럼 ..
1. 오류발생 경로 이미 생성된 시퀀스의 MAXVALUE를 변경하던 와중 MAXVALUE가 특정 값 이하로 설정 될 경우 오류가 발생 2. 발생원인 MAXVALUE로 설정한 값이 CACHE로 할당된 값에 비해 너무 작아서 문제가 발생 CASHE는 처리속도를 증가시키기 위해 SEQUENCE 번호를 한 번에 여러 개씩 메모리에 올려놓고 작업을 한다. 이러한 방법이 매번 SEQUENCE 번호를 생성하는 것보다 빠르기 때문이다. ( https://denodo1.tistory.com/273) CASHE 옵션이 아래 그림과 같이 20개씩 번호를 생성하도록 설정되어 있다면 한번에 1에서 20번까지의 시퀀스가 생성된다. 그런데 아래와 같이 MACVALUE를 70으로 설정할 경우 CACHE 설정값에 한참 못 미치게 된다..