๐ ์ค๋์ ํ์ต
1. ๊ธฐ๋ณธ select ๊ตฌ๋ฌธ - ์นผ๋ผ ์ถ์ถ (distinct / count / order by / limit)
โ
customer ํ
์ด๋ธ์์ ์ ์ฒด ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
select *
from customers c ;
โ
customer ํ
์ด๋ธ์์ country ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ธฐ
select country
from customers c ;
โ
customer ํ
์ด๋ธ์์ country ๋ฐ์ดํฐ์ ๊ณ ์ ๊ฐ๋ง ๊ฐ์ ธ์ค๊ธฐ
select distinct(country)
from customers c ;
โ
customer ํ
์ด๋ธ์์ country ๋ฐ์ดํฐ์ ๊ณ ์ ๊ฐ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ
select count(distinct(country))
from customers c ;
โ
customer ํ
์ด๋ธ์์ country ๋ฐ์ดํฐ์ ๊ณ ์ ๊ฐ ๊ฐ์๋ฅผ 'coutry_cnt'๋ผ๋ ์ปฌ๋ผ๋ช
์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ
select count(distinct(country)) as country_cnt
from customers c ;
โ
customers ํ
์ด๋ธ์ country, city ๋ฐ์ดํฐ๋ฅผ ์ ๋ํฌํ๊ฒ ์ถ์ถํ๊ณ country ์ค๋ฆ์ฐจ์, city ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ
select distinct country, city
from customers c
order by country, city desc;
โ
customers ํ
์ด๋ธ์ company_name ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์์ 3๊ฐ์ ๋ฐ์ดํฐ๋ง ๋ฝ
select company_name
from customers c
order by company_name
limit 3;
2. ์นผ๋ผ ์ฐ์ฐ์ - ์ฐ์ ์ฐ์ฐ์, ํฉ์ฑ์ฐ์ฐ์
โ
order_details์ ์ฃผ๋ฌธ๊ธ์ก ๊ณ์ฐํ์ฌ tot๋ผ๋ ์ปฌ๋ผ์ผ๋ก ์ถ๊ฐํ๊ธฐ
select *, unit_price * quantity * (1-discount) as tot
from order_details od ;
โ
concat ํจ์๋ฅผ ์ฌ์ฉํ์ฌ customers ํ
์ด๋ธ์์ ์ฃผ์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ค๊ธฐ
address, city, region, postal_code, country ํฉ์ฑ
๊ณต๋ฐฑ(' ')์ผ๋ก ๊ฐ ์ปฌ๋ผ ๊ตฌ๋ถ
select concat(address, ' ', city, ' ', region, ' ', postal_code, ' ', country)
from customers c ;
โ
ํฉ์ฑ์ฐ์ฐ์('||') ์ฌ์ฉํ์ฌ customers ํ
์ด๋ธ์์ ์ฃผ์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ค๊ธฐ
address, city, region, postal_code, country ํฉ์ฑ
๊ณต๋ฐฑ(' ')์ผ๋ก ๊ฐ ์ปฌ๋ผ ๊ตฌ๋ถ
select address || ' ' || city || ' ' || region || ' ' || postal_code ||' ' || country
from customers c ;
โ๏ธNULL ๊ณผ์ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ NULLโ๏ธ
โ
ํด๊ฒฐ ๋ฐฉ๋ฒ
select coalesce(address, '')||' '||coalesce(city, '')||' '||coalesce(region, '')||' '||coalesce(postal_code , '')||' '||coalesce(country, '')
from customers c
โ
coalesce ํจ์ : ์ธ์๋ก ์ฃผ์ด์ง ์นผ๋ผ๋ค ์ค null์ด ์๋ ์ฒซ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ ํจ์
select homepage, fax, phone, coalesce(homepage, fax, phone) as coalesce
from suppliers s ;
โ
nullif ํจ์ : ํน์ ๊ฐ์ NULL ์ฒ๋ฆฌํ๊ธฐ
select *, nullif(category_name, 'Beverages')
from categories c;
3. ๋ ์ง/์๊ฐํ ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ
๋ฐ์ดํฐ ํ์ | ํฌ๊ธฐ | ์ค๋ช | ๊ธฐ๋ณธ ํํ |
timestamp | 8byte | ๋ ์ง์ ์๊ฐ | YYYY-MM-DD HH:MI:SS.MS [TIMEZONE] |
date | 4byte | ๋ ์ง(์๊ฐ ๋ฏธํฌํจ) | YYYY-MM-DD |
time | 8byte | ์๊ฐ(๋ ์ง ๋ฏธํฌํจ) | HH:MI:SS.MS [TIMEZONE] |
interval | 16byte | ๋ ์ง ์ฐจ์ด | 1 days, 1 mon, 100 years |
โ
timestamp
select now();
select current_timestamp; --timezone ํฌํจ
select localtimestamp ; --timezone ํฌํจํ์ง ์์
select current_date;
select current_time; --timezone ํฌํจ
select localtime; --timezone ํฌํจํ์ง ์์
โ
์๋ฃํ ๋ณํ
1) cast(๋ณํ๋์ as ์๋ฃํ)
2) ๋ณํ๋์ :: ์๋ฃํ
โ
now()์์ ํ์ฌ ๋ ์ง๋ง ๊ฐ์ ธ์ค๊ธฐ
select cast(now() as date);
select now()::date;
โ
now()์์ ํ์ฌ ์๊ฐ๋ง ๊ฐ์ ธ์ค๊ธฐ
select cast(now() as time);
select now()::time;
๋ ์ง ํจ์ (๋จ์ผํ) | ๋ฐํ ๊ฐ | ๋ฐํ ๊ฐ ์๋ฃํ |
now() | ํ์ฌ ๋ ์ง์ ์๊ฐ ์ถ๋ ฅ | |
extract('part' from ๋ ์ง/์๊ฐ) | ๋ ์ง/์๊ฐ ๋ฐ์ดํฐ์์ part๋ฅผ ๋ฐํ | |
date_part('part' , ๋ ์ง/์๊ฐ) | ๋ ์ง/์๊ฐ ๋ฐ์ดํฐ์์ part๋ฅผ ๋ฐํ | ์ ์ํ |
date_trunc('part' , ๋ ์ง/์๊ฐ) | ๋ ์ง/์๊ฐ ๋ฐ์ดํฐ์์ part ์ดํ ์ด๊ธฐํํ์ฌ ๋ฐํ | ํ์์คํฌํํ |
to_char(๋ ์ง/์๊ฐ , 'part') | ๋ ์ง/์๊ฐ ๋ฐ์ดํฐ์์ part๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํ | ๋ฌธ์ํ |
โ
2023๋
4์ 9์ผ์ ๋ฌด์จ ์์ผ์ผ๊น?
select extract('dow' from '2023-04-09'::date);
select date_part('dow', '2023-04-09'::date);
select to_char('2023-04-09'::date, 'day');
โ
orders ํ
์ด๋ธ์์ order_date์ '์ฐ๋-์' ์ถ๋ ฅํ๊ธฐ
select order_date , to_char(order_date, 'YYYY-MM') as year_month
from orders o ;
4. ๋ค์ค ํ ํจ์
5. ๊ฐ์ธ๊ณผ์
'STARTERS 4๊ธฐ > [STARTERS] TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[STARTERS 4๊ธฐ TIL] #48์ผ์ฐจ(23.04.13) (0) | 2023.04.13 |
---|---|
[STARTERS 4๊ธฐ TIL] #47์ผ์ฐจ(23.04.12) (0) | 2023.04.13 |
[STARTERS 4๊ธฐ TIL] #45์ผ์ฐจ(23.04.10) (1) | 2023.04.11 |
[STARTERS 4๊ธฐ TIL] #44์ผ์ฐจ(23.04.07) (0) | 2023.04.10 |
[STARTERS 4๊ธฐ TIL] #43์ผ์ฐจ(23.04.06) (0) | 2023.04.10 |