목록Skillset/SQL (26)
Yours Ever, Data Chronicles
Admin이 특정 role에게 권한을 줄 때 사용할 수 있는 여러 명령어에 대해 알아보자. 1. 신규 Role 생성하기--예시: de_user 생성create user de_user password 'password'; 위 쿼리를 날려 'de_user' 라는 신규 role 을 생성할 수 있다.참고로, 보통 패스워드는 영어 대문자, 소문자, 특수문자, 숫자를 포함하여 생성한다.이제 밑에서 이 'de_user' 라는 role에게 권한을 부여해보자. 2. Role에게 "특정 스키마 내" 테이블 권한 부여하기 이미 스키마 내에 생성되어 있는 테이블에 대해 select(조회), insert(삽입), update(업데이트), delete(전체삭제), truncate(테이블 틀 유지하되 내용만 삭제) 권한은 다음 쿼..

GA4에서 event_timestamp는 연-월-일-시에 대한 시간 데이터를 unix time형태로 제공한다.이를 연-월-일-시로 바꿔서 보기 위해선 다음 사이트에서 변환이 가능하다. Epoch Converter Epoch ConverterConvert Unix Timestamps (and many other date formats) to regular dates.www.epochconverter.com 근데 우리는 하나의 시간만 변환할 것은 아니므로 쿼리를 통해 epoch 를 timestamp로 변환해야 한다.timestamp 'epoch' + event_timestamp * interval '1 second' 보통은 위와 같이 하면 timestamp 형태로 변환된다.그러나 이런 에러가 뜰 것이다. 그..
오늘은 Redshift에서 프로시저를 만드는 쿼리문에 대해 소개한다.프로시저(procedure)란, DB에서 일어나는 일련의 작업을 정리한 절차를 쿼리로 작성하여 관계형 데이터베이스(RDBS) 시스템에 정리한 것을 이야기한다. 그래서 '프로시저를 돌린다' 라는 것은 프로시저를 call 하여 어떤 동작을 일괄적으로 처리하는 것을 의미한다. 굉장히 편리한 기능! 나는 AWS Redshift를 사용하고 있어 이에 따른 프로시저문을 쓰는데, postgresql에도 동일하게 적용되니 참고하자.또한 DB를 다루는 툴로는 DBeaver를 사용하고 있다. DBeaver에서 프로시저를 만들 때의 절차는 다음과 같다. 1. script에 프로시저문을 입력한 후, 전체선택 (ctrl+A) → alt+X 눌러 프로시저문 저장..

저번 포스팅에서는 파이썬 상에서 AWS Redshift를 연결하여, 직접 Jupyter Notebook 상에서 쿼리를 날리는 방법에 대해 알아보았습니다. (이전 포스팅 바로가기) 그런데 궁금증이 생깁니다. 파이썬에서 쿼리를 날릴 땐 쿼리문에 반드시 따옴표 3개를 써서 주석 처리를 해야 하는데, 그럼 파이썬 상에선 이것이 주석으로 인식됩니다. 하지만 쿼리상에서 어떤 조건을 input으로 즉, 파라미터(parameter)로 넣고자 할 때는 어떻게 해야 할까요? 결론부터 말하자면 format 메서드를 사용해주면 됩니다. 앞의 포스팅에서는 다음의 쿼리를 실행했습니다. 예를 들어, 저는 주간 매출 랭킹 10위 안에 드는 인기 상품만 뽑아보고자 합니다. 상품 테이블은 product에, 매출정보 테이블은 sale_t..

안녕하세요, Everly입니다. 데이터 분석 업무를 하다 보면 쿼리 결과를 파이썬에 불러와서 사용하는 경우가 많이 생기는데요. SQL 상에서 쿼리를 날려 결과를 csv 형태로 뽑아 다시 파이썬에서 불러오는 것보다, 처음부터 파이썬에서 쿼리를 날릴 수 있다면 훨씬 수월하겠죠? 오늘은 그 방법에 대해 포스팅합니다. How to connect python and Redshift 먼저 파이썬 상에서 AWS Redshift와 연결하기 위해 아나콘다 프롬프트에 다음을 입력해 설치해줍니다. pip install redshift_connector 다음으로는 Jupyter Notebook을 열어 AWS 계정 정보를 인증해주면 되는데요, 이를 위해선 여러분의 계정의 host, database, user, password ..

오늘 알아볼 함수는 REPLACE이다. REPLACE(문자열, 'A', 'B') 위와 같은 형태로 사용하며, 반드시 '문자'에 대해서만 쓸 수 있다. 문자열 내의 'A'가 있다면 'B'로 바꿔준다. 예를 들어 'APP'에 대해 바꿔준다면 'BPP'로 바뀌는 식이다. 그럼 이를 응용해서, 어떤 문자를 없애주는 것도 가능하다. 'A'를 ''(공백)으로 바꿔주면 'APP' → 'PP'가 된다. 직접 문제를 풀어보며 적용해보자. Q. 사만다는 [EMPLOYEES] 테이블에 있는 직원들의 월평균 임금(Salary)을 계산하려고 한다. (문제 바로가기) Q. 그런데 그녀의 키보드에서 숫자 0 key가 고장나버려서, Salary에 있는 0 값이 모두 사라져버렸다. 예를 들어 누군가의 월급이 550890이었다면, 55..

SQL을 사용하다 보면 보통은 숫자값을 집계하는 경우가 많은데, SQL의 좋은 점은 문자를 활용해서 깔끔한 형태의 문장을 만들 수도 있다는 점이다. 문제를 바로 풀어보자. (문제 바로가기) 오늘 활용할 테이블 'OCCUPATIONS'이다. 이 테이블의 경우 사람의 이름과, 그 사람의 직업이 적힌 간단한 데이터셋이다. 이 테이블을 활용해 다음과 같은 문장을 만들어보고자 한다. 첫 번째로는 사람 이름 옆에 그 사람의 직업의 이니셜을 괄호로 붙여 출력하고 싶다. 예를 들어, 이름은 'Everly' 이고, 직업은 'Data Scientist'라면 "Everly(D)" 로 출력한다. (단, 순서는 이름 알파벳순으로 한다.) 두 번째로는 각 직업에 해당하는 사람 수가 몇 명인지 세어 문장 형태로 출력하고 싶다. 예..

Q. 다음과 같은 TRIANGLES 테이블이 있다고 하자. 각 컬럼인 A, B, C는 한 삼각형의 세 변의 길이를 의미한다. 이 정보를 활용하여 해당 삼각형이 어떤 종류의 삼각형인지를 구분하여라. (문제 바로가기) 삼각형의 타입은 다음과 같은 조건으로 나눈다. 삼각형의 세 변의 길이가 모두 동일한 경우: Equilateral 삼각형의 세 변 중 두 변의 길이가 동일한 경우: Isosceles 삼각형의 세 변의 길이가 모두 다른 경우: Scalene ★ 다만 가장 긴 변이 나머지 두 변의 합보다 작다면 그건 삼각형이라고 할 수 없다. (예를 들어 C가 가장 긴 변인데, A와 B의 합이 C보다 작으면 Not A Triangle) 예를 들어 TRIANGLES 테이블의 값이 다음과 같다고 하자. 첫 행은 Iso..

보통 특정 문자로 시작하거나 끝나는 경우를 SQL에서 검사하기 위해 LIKE 연산자를 많이 사용한다. 그런데, 특정 문자 1개가 아니라 여러 개를 검사해야 하는 경우는 어떻게 하면 될까? 이와 관련한 문제 3개를 알아보자. ✔Table of Contents 1. 특정 문자들로 시작하는 도시 출력하기 STATION 테이블에서 모음(a, e, i, o, u)으로 시작하는 CITY를 출력하라. CITY의 중복은 포함하지 않는다. 문제 바로가기(클릭) SQL에서 특정 문자로 시작하는 경우엔 LIKE '특정문자%' 를 사용하면 된다. 그런데 이렇게 특정 문자가 여러 개일 때는 어떻게 해야할까? 바로 OR를 사용하면 된다. (참고로 SQL은 대소문자를 구분하지 않으므로 A, E, I, O, U는 대문자로 쓰든 소문..

HackerRank의 SQL 문제를 풀다가 흥미로운 문제를 발견해서 포스팅한다. (문제 바로가기) Query the two cities in STATION with the shortest and longest CITY names, as well as their respective lengths (i.e.: number of characters in the name). If there is more than one smallest or largest city, choose the one that comes first when ordered alphabetically. 번역하면, STATION 이라는 테이블의 가장 짧은 이름의 CITY와, 가장 긴 이름의 CITY를 구하라는 문제이다. 주의할 점은 혹시 CI..