select count(*), count(cust_id), count(distinct cust_id), sum(sales_qty*goods_price)
from cust_sales;
쿼리문의 base 필수 구조다.
select 컬럼명
from 테이블명
select에는 위의 예시처럼 count()라는 함수를 사용할 수 있다.
행의 개수를 세어주는 함수다.
*은 모든 행을 뜻한다.
distinct는 중복된 값을 제외한다.
sum()도 이름과 같이 해당 열의 모든 행 값의 합을 구한다.
select cust_id, count(distinct sales_dt) as sales_count,
min(str_to_date(sales_dt, "%Y%m%d")) as first_sale,
max(str_to_date(sales_dt, "%Y%m%d")) as last_sale,
datediff(max(str_to_date(sales_dt, "%Y%m%d")), min(str_to_date(sales_dt, "%Y%m%d"))) as sales_range
from cust_sales
group by cust_id
order by count(distinct sales_dt) desc;
min, max와 같은 함수도 사용할 수 있다. 해당 열의 최솟값과 최댓값을 찾아주는 함수다.
as 키워드를 이용해 결과의 열 이름을 바꿀 수 있다.
str_to_date 함수를 이용해 날짜 형식의 데이터를 문자열로 바꿀 수 있다.
datediff 함수를 이용해 두 날짜간의 차이를 구할 수 있다.
- 위에서는 가장 최근 날짜와 제일 오래된 날짜의 차이를 구했다.
group by를 통해 특정 열의 항목 별로 그룹화를 할 수 있다.
- 위에서는 고객별로 그룹화를 했다.
order by를 통해 정렬을 할 수 있다. default 값은 asc로 오름차순이고, 내림차순을 원한다면 desc를 이용한다.
파이썬을 이용해 데이터베이스를 조작할 수도 있다.
pip install pymysql
우선 pymysql이라는 라이브러리를 설치해야한다.
import pandas as pd
import pymysql
connection = pymysql.connect(
host='',
user='',
password='',
database=''
)
위의 코드처럼 host, user, password, database 값을 지정하면 데이터베이스와 연결할 수 있다.
sql_query = '''
select cust_id, count(distinct sales_dt) as sales_count,
min(str_to_date(sales_dt, "%Y%m%d")) as first_sale,
max(str_to_date(sales_dt, "%Y%m%d")) as last_sale,
datediff(max(str_to_date(sales_dt, "%Y%m%d")), min(str_to_date(sales_dt, "%Y%m%d"))) as sales_range
from cust_sales
group by cust_id
order by count(distinct sales_dt) desc;
'''
cursor = connection.cursor()
cursor.execute(sql_query)
result = cursor.fetchall()
df = pd.DataFrame(result)
print(df)
위에서 작성한 쿼리문을 문자열로 감싸 지정하면 쿼리를 실행할 수 있다.
'Programming > Python' 카테고리의 다른 글
MySQL Workbench 사용하기 (1) | 2023.11.23 |
---|---|
판다스 실제 데이터 활용 (1) | 2023.10.16 |
판다스 (2) | 2023.10.11 |