본문 바로가기
한국경제 with toss

7/9 - SQL

by devmin67 2024. 7. 9.


설치

 

-ctrl+a 이후 번개모양 누르기

 

데이터 베이스 생성 후 스키마 클리후 우클릭 리스레시

 

스키마 만들기 - 67페이지

 

 

-에러 방지를 위해 dataset2_ansi에서 ansi를 지우고 import함


SQL 실습

 

 

-- select : 선택하다 필드를
SELECT * FROM customers;
select customerNumber, customerName, contactFirstName FROM customers;
select 
customerNumber
    , customerName
    , contactFirstName
from
customers
;

-- where 조건 : 필터링
select *
from 
customers
where country = 'USA'
;

 



# pandas로 SQL 쿼리 변환
- SQL 쿼리를 pandas 코드로 변환
- 특정 조건을 만족하는 행 선택

```python
import pandas as pd

# 예시 데이터프레임 생성
data = {
    'customer_id': [1, 2, 3, 4, 5],
    'state': ['A', 'B', 'C', 'D', 'E']
}
customers = pd.DataFrame(data)

# state가 'D' 이하인 행 선택
result = customers[customers['state'] <= 'D']

print(result)

 

// sql을 판다스로 변환해주는 연습하기


like 연산자를 이용해 Gift라는 특정한 단어를 가진 고객의 이름(customerName)을 추출함

%위치에 따라 조회되는 목록이 다르다.

 


MySQL 정규표현식(자주자주 보면서 익숙해지기... 까다로워서 한 번에 마스터 불가능, 안쓰면 까먹는다)

정규표현식의 개념

정규표현식은 특정 문자열 패턴을 설명하기 위한 특수한 텍스트 문자열입니다. 정규표현식의 주요 구성 요소는 다음과 같습니다:

  • . : 임의의 한 문자 (개행 문자를 제외)
  • ^ : 문자열의 시작
  • $ : 문자열의 끝
  • [abc] : a, b, c 중 하나의 문자
  • [a-z] : a부터 z까지의 문자 중 하나
  • [0-9] : 0부터 9까지의 숫자 중 하나
  • * : 0개 이상의 앞 문자가 나타남
  • + : 1개 이상의 앞 문자가 나타남
  • ? : 0개 또는 1개의 앞 문자가 나타남
  • | : OR 연산자 (ex: a|b는 a 또는 b)
  • {n} : 정확히 n번 나타남
  • {n,} : n번 이상 나타남
  • {n,m} : n번 이상, m번 이하 나타남

 

 

 

-- between 연산자
select *
from
payments
where 
amount between 10000 and 50000
    and paymentDate between '2003-05-20' and '2003-06-05'
    and checkNumber like '%JM%'
;

 

 


 

- 1은 첫번쨰 필드(오름차순), 2는 두번째 필드(내림차순)으로 정렬하라는 의미


groupby와 having

 

 

-- group by와 having
select * from orders;
select 
distinct status -- 중복 값 제거
from orders
;

select 
    
status
    , COUNT(*)  AS "갯수"-- 집계함수
from
orders   -- distinct와 group by를 쓰는 것은 동일하다.
group by
status
having 갯수 >= 5 -- DBMS마다 달라요... 정석은 갯수가 아니라 COUNT를 그대로 써줘야함

order by 2 desc
;


이 SQL 쿼리는 customers 테이블에서 각 나라(country)와 도시(city)별로 고객 수를 집계합니다. 쿼리의 구조와 기능을 단계별로 설명하면 다음과 같습니다:

  1. SELECT country, city, COUNT(*):
    • country와 city 컬럼의 값을 선택하고 각 그룹(나라와 도시)의 행 수를 셉니다.
    • COUNT(*)는 각 그룹에 속하는 행의 총 개수를 반환합니다.
  2. FROM customers:
    • 데이터를 가져올 테이블을 지정합니다. 여기서는 customers 테이블입니다.
  3. GROUP BY country, city:
    • 데이터를 country와 city 기준으로 그룹화합니다.
    • 그룹화된 각 country와 city 조합마다 COUNT(*)가 적용되어 해당 조합에 속하는 행의 개수를 셉니다.

이 쿼리는 결국 각 나라와 도시마다 몇 명의 고객이 있는지 집계한 결과를 반환합니다.

'한국경제 with toss' 카테고리의 다른 글

7/ 11 - SQL 실습(타이타닉 데이터 활용)  (0) 2024.07.11
7/10 - 데이터베이스 모델링  (0) 2024.07.11
7/8 - streamlit  (0) 2024.07.08
7/4 - 맷플롯립 기본 요소  (0) 2024.07.04
7/3 데이터 시각화  (1) 2024.07.03