Post

๐Ÿ˜ PostgreSQL ๊ธฐ๋ณธ โ…ฆ - ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ…Œ์ด๋ธ” ์กฐ์ธ

๐Ÿ˜ PostgreSQL ๊ธฐ๋ณธ โ…ฆ - ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ…Œ์ด๋ธ” ์กฐ์ธ

๐Ÿ“™ ใ€Ž์‹ค์šฉ SQLใ€์„ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

Join์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ์—ฐ๊ฒฐํ•˜๊ธฐ

  • ANSI SQL ํ‘œ์ค€์˜ ์ผ๋ถ€์ธ JOIN์€ ON์— ๋ถ€์šธ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•œ ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•œ๋‹ค.
1
2
3
SELECT *
FROM table_a JOIN table_b
ON table_a.key_column = table_b.foreign_key_column;
  • ์ฐธ๊ณ ๋กœ >=, >์™€ ๊ฐ™์€ ํ‘œํ˜„์‹๋„ ๋ถ€์šธ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์กฐ์ธ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ‚ค ์—ด๋กœ ํ…Œ์ด๋ธ” ์กฐ์ธํ•˜๊ธฐ

ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE TABLE departments (
	dept_id integer,
	dept text,
	city text,
	CONSTRAINT dept_key PRIMARY KEY (dept_id),
	CONSTRAINT dept_city_unique UNIQUE (dept, city)
);

CREATE TABLE employees (
	emp_id integer,
	first_name text,
	last_name text,
	salary numeric(10,2),
	dept_id integer REFERENCES departments (dept_id),
	CONSTRAINT emp_key PRIMARY KEY (emp_id)
);

INSERT INTO departments
VALUES
	(1, 'Tax', 'Atlanta'),
	(2, 'IT', 'Boston');

INSERT INTO employees
VALUES
	(1, 'Julia', 'Reyes', 115300, 1),
	(2, 'Janet', 'King', 98000, 1),
	(3, 'Arthur', 'Pappas', 72700, 2),
	(4, 'Michael', 'Taylor', 89500, 2);
dept_iddeptcity
1TaxAtlanta
2ITBoston
  • dept_id ์—ด์€ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋‹ค.
  • ์—ฌ๊ธฐ์„œ ๊ธฐ๋ณธ ํ‚ค๋Š” ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์—ด ๋˜๋Š” ์—ด ๋ชจ์Œ์ด๋‹ค.
  • ์œ ํšจํ•œ ๊ธฐ๋ณธ ํ‚ค ์—ด์€ ๋‹ค์Œ ์ œ์•ฝ ์กฐ๊ฑด์ด ์ ์šฉ๋œ๋‹ค.
  1. ์—ด ๋˜๋Š” ์—ด ๋ชจ์Œ์€ ๊ฐ ํ–‰์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
  2. ์—ด ๋˜๋Š” ์—ด ๋ชจ์Œ์—๋Š” ๊ฒฐ์ธก๊ฐ’์ด ์—†์–ด์•ผ ํ•œ๋‹ค.
  • CONSTRAINT ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ departments ๋ฐ employees ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ •์˜ํ•œ๋‹ค.
emp_idfirst_namelast_namesalarydept_id
1JuliaReyes115,3001
2JanetKing98,0001
3ArthurPappas72,7002
4MichaelTaylor89,5002
  • emp_id๋Š” ๊ธฐ๋ณธ ํ‚ค, dept_id ์—ด์€ departments ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ ํ‚ค์ด๋‹ค.
  • ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ฐธ์กฐํ•˜๋Š” ์—ด์— ํ•ด๋‹น ๊ฐ’์ด ์ด๋ฏธ ์กด์žฌํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ ํ‚ค์™€ ๋‹ฌ๋ฆฌ ์™ธ๋ž˜ ํ‚ค ์—ด์€ ๋น„์–ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ค‘๋ณต๋œ ๊ฐ’์ด ํ—ˆ์šฉ๋œ๋‹ค.
  • ๊ฐ€๋ น ๋‘ ํ…Œ์ด๋ธ” ๊ฐ’์„ ํ†ตํ•ด Julia์˜ ๋ถ€์„œ ID๋Š” 1์ด๊ณ , ํ•ด๋‹น ๋ถ€์„œ๋Š” Atlanta์˜ Tax ๋ถ€์„œ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
deptlocationfirst_namelast_namesalary
TaxAtlantaJuliaReyes115,300
TaxAtlantaJanetKing98,000
ITBostonArthurPappas72,700
ITBostonMichaelTaylor89,500
  • departments ํ…Œ์ด๋ธ”๊ณผ employees ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ„๋“ฏ ๊ผญ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋‚˜๋ˆ ์•ผ ํ• ๊นŒ?
  • ์œ„์™€ ๊ฐ™์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ํ…Œ์ด๋ธ”์— ํ†ตํ•ฉํ•˜์—ฌ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
  1. ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ํ…Œ์ด๋ธ”์— ์กฐ์ธํ•  ๋•Œ ํ•„์—ฐ์ ์œผ๋กœ ์ •๋ณด๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•œ๋‹ค.
    • ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ํ–‰์„ ๋‹ค๋ฃจ๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋Š˜์–ด๋‚  ๊ฒฝ์šฐ ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๋กœ ์ธํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ํฌ๊ฒŒ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋œ๋‹ค.
  2. ๊ด€๋ จ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ํ…Œ์ด๋ธ”์— ๋„ฃ๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค.
    • ๋ถ€์„œ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•œ๋‹ค๋ฉด, ํ…Œ์ด๋ธ”์— ๊ฐ ํ–‰์— ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค.
    • ๊ทธ๋Ÿฐ๋ฐ, ์ผ๋ถ€ ํ–‰๋งŒ ์ž˜๋ชป ์—…๋ฐ์ดํŠธํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด, ๋ถ€์„œ ํ…Œ์ด๋ธ”์˜ ํ•œ ํ–‰๋งŒ ๊ฐ’์„ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.
  3. ์ •๋ณด๊ฐ€ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๊ฑธ์ณ ์ •๊ทœํ™”๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ ์ „์ฒด์ ์œผ๋กœ ์ •๋ณด๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ์–ด๋ ต์ง€ ์•Š๋‹ค.
    • JOIN์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

JOIN์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ์ฟผ๋ฆฌํ•˜๊ธฐ

  • ์ฟผ๋ฆฌ์—์„œ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ง€์ •ํ•œ ์—ด์— ๋Œ€ํ•ด ON์ ˆ์˜ ํ‘œํ˜„์‹์„ true๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ์žˆ๋Š” ๋‘ ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด ๋‘ ํ…Œ์ด๋ธ”์˜ ์—ด์„ ์ฟผ๋ฆฌ์˜ ์ผ๋ถ€๋กœ ์š”์ฒญํ•œ ๊ฒฝ์šฐ, ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜๊ฑฐ๋‚˜ ์กฐ์ธ๋œ ํ…Œ์ด๋ธ”์˜ ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ WHERE ์ ˆ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • JOIN์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
1
2
3
4
SELECT *
FROM employees JOIN departments
ON employees.dept_id = departments.dept_id
ORDER BY employees.dept_id;
emp_idfirst_namelast_namesalarydept_iddept_iddeptcity
1JuliaReyes115,30011TaxAtlanta
2JanetKing98,00011TaxAtlanta
3ArthurPappas72,70022ITBoston
4MichaelTaylor89,50022ITBoston
  • ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ์—๋Š” ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์—ด์ด ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์—, dept_id ์—ด์ด ๋‘ ๋ฒˆ ๋“ฑ์žฅํ•œ๋‹ค.
  • ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ํ…Œ์ด๋ธ”์—์„œ ์›ํ•˜๋Š” ์—ด๋งŒ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค.

JOIN ์œ ํ˜• ์ดํ•ดํ•˜๊ธฐ

  • ๋‹ค์Œ์€ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ JOIN์— ๋Œ€ํ•œ ์˜ˆ์‹œ์ด๋‹ค.
  1. JOIN
    • INNER JOIN์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋‘ ํ…Œ์ด๋ธ”์˜ ์กฐ์ธ๋œ ์—ด์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์žˆ๋Š” ๋‘ ํ…Œ์ด๋ธ”์˜ ํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  2. LEFT JOIN
    • ์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • SQL์ด ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰์„ ์ฐพ์œผ๋ฉด ํ•ด๋‹น ํ–‰์˜ ๊ฐ’์ด ํฌํ•จ๋œ๋‹ค.
    • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ๊ฐ’์€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค. - RIGHT JOIN
    • ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • SQL์ด ์™ผ์ชฝ ํ…Œ์ด๋ธ”์—์„œ ์ผ์น˜ํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰์„ ์ฐพ์œผ๋ฉด ํ•ด๋‹น ํ–‰์˜ ๊ฐ’์ด ํฌํ•จ๋œ๋‹ค.
    • ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ์™ผ์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ๊ฐ’์€ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค. - FULL OUTER JOIN
    • ๋‘ ํ…Œ์ด๋ธ”์—์„œ ๋ชจ๋“  ํ–‰์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ํ–‰์€ ์—ฐ๊ฒฐํ•œ๋‹ค.
    • ๋ฐ˜๋Œ€ ํ…Œ์ด๋ธ”์— ์ผ์น˜ํ•˜๋Š” ํ–‰์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ๋นˆ ๊ฐ’์ด ํฌํ•จ๋œ๋‹ค. - CROSS JOIN
    • ๋‘ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • JOIN์„ ์‚ดํŽด๋ณด๊ธฐ ์œ„ํ•œ ๋‘ ํ…Œ์ด๋ธ”์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑํ•˜์ž.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CREATE TABLE district_2020 (
id integer CONSTRAINT id_key_2020 PRIMARY KEY,
school_2020 text
);

CREATE TABLE district_2035 (
id integer CONSTRAINT id_key_2035 PRIMARY KEY,
school_2035 text
);

INSERT INTO district_2020 VALUES
(1, 'Oak Street School'),
(2, 'Roosevelt High School'),
(5, 'Dover Middle School'),
(6, 'Webutuck High School');

INSERT INTO district_2035 VALUES
(1, 'Oak Street School'),
(2, 'Roosevelt High School'),
(3, 'Morrison Elementary'),
(4, 'Chase Magnet Academy'),
(6, 'Webutuck High School');

JOIN(INNER JOIN)

1
2
3
4
SELECT *
FROM district_2020 JOIN district_2035
ON district_2020.id = district_2035.id
ORDER BY district_2020.id;
  • ์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด JOIN์— ์‚ฌ์šฉํ•œ ์—ด์—์„œ ์ผ์น˜ํ•˜๋Š” ํ–‰์„ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด JOIN ๋˜๋Š” INNER JOIN ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋‘ ํ…Œ์ด๋ธ”์— ๋™์‹œ์— ์กด์žฌํ•˜๋Š” ํ•™๊ต ID๊ฐ€ ์„ธ ๊ฐœ์ด๋ฏ€๋กœ ์ฟผ๋ฆฌ๋Š” ํ•ด๋‹น ID๋ฅผ ๊ฐ€์ง„ ์„ธ ๊ฐœ์˜ ํ–‰๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๋˜ํ•œ JOIN ํ‚ค์›Œ๋“œ ์™ผ์ชฝ์— ์ ์€ ํ…Œ์ด๋ธ”์˜ ์—ด์ด ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์—์„œ ์•ž์— ํ‘œ์‹œ๋œ๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.
  • JOIN ํ‚ค์›Œ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ž˜ ๊ตฌ์กฐํ™”๋˜๊ณ , ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์ž˜ ๋œ ๋ฐ์ดํ„ฐ์…‹์—์„œ ๋‘ ํ…Œ์ด๋ธ” ๋ชจ๋‘์— ์กด์žฌํ•˜๋Š” ํ–‰๋งŒ ์ฐพ์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

JOIN์—์„œ USING ์‚ฌ์šฉํ•˜๊ธฐ

1
2
3
4
SELECT *
FROM district_2020 JOIN district_2035
USING (id)
ORDER BY district_2020.id;
  • JOIN์˜ ON ์ ˆ์— ์‚ฌ์šฉํ•˜๋Š” ์—ด ์ด๋ฆ„์ด ๋™์ผํ•œ ๊ฒฝ์šฐ USING ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ค‘๋ณต ์ถœ๋ ฅ์„ ์ค„์ด๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‘˜ ์ด์ƒ์˜ ์—ด์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
idschool_2020school_2035
1Oak Street SchoolOak Street School
2Roosevelt High SchoolRoosevelt High School
6Webutuck High SchoolWebutuck High School

LEFT JOIN๊ณผ RIGHT JOIN

  • JOIN๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ๊ฐ ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์žˆ๋Š” ํ–‰์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ๊ฒฐ๊ณผ์— ํ•ด๋‹น ํ–‰์˜ ๊ฐ’์„ ํฌํ•จํ•œ๋‹ค.
1
2
3
4
5
6
7
8
9
10
11
-- LEFT JOIN
SELECT *
FROM district_2020 LEFT JOIN district_2035
ON district_2020.id = district_2035.id
ORDER BY district_2020.id;

-- RIGHT JOIN
SELECT *
FROM district_2020 RIGHT JOIN district_2035
ON district_2020.id = district_2035.id
ORDER BY district_2035.id;
idschool_2020idschool_2035
1Oak Street School1Oak Street School
2Roosevelt High School2Roosevelt High School
5Dover Middle Schoolย ย 
6Webutuck High School6Webutuck High School
  • JOIN์˜ ์™ผ์ชฝ์— ์žˆ๋Š” ํ–‰ 4๊ฐœ๊ฐ€ ๋ชจ๋‘ ํ‘œ์‹œ๋˜๊ณ , ์šฐ์ธก ํ…Œ์ด๋ธ”์—๋Š” id๊ฐ€ 5์ธ ํ–‰์ด ์—†์œผ๋ฏ€๋กœ ๊ฐ’์„ ๋น„์›Œ ํ‘œ์‹œํ•œ๋‹ค.
idschool_2020idschool_2035
1Oak Street School1Oak Street School
2Roosevelt High School2Roosevelt High School
ย ย 3Morrison Elementary
ย ย 4Chase Magnet Academy
6Webutuck High School6Webutuck High School
  • RIGHT JOIN๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.
  • JOIN๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ON ๋Œ€์‹  USING์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ LEFT JOIN๊ณผ RIGHT JOIN์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
  1. ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์ด ํฌํ•จ๋˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ
  2. ํ…Œ์ด๋ธ” ์ค‘ ํ•˜๋‚˜์—์„œ ๊ฒฐ์ธก๊ฐ’์„ ๋ชจ๋‘ ์ฐพ์œผ๋ ค๋Š” ๊ฒฝ์šฐ, ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ธฐ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒฝ์šฐ
  3. ์กฐ์ธ๋œ ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€ ํ–‰์— ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ

FULL OUTER JOIN

1
2
3
4
SELECT *
FROM district_2020 FULL OUTER JOIN district_2035
ON district_2020.id = district_2035.id
ORDER BY district_2020.id;
idschool_2020idschool_2035
1Oak Street School1Oak Street School
2Roosevelt High School2Roosevelt High School
5Dover Middle Schoolย ย 
6Webutuck High School6Webutuck High School
ย ย 4Chase Magnet Academy
ย ย 3Morrison Elementary
  • ์ผ์น˜ ์—ฌ๋ถ€์— ๊ด€๊ณ„ ์—†์ด ๋‘ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ๋ณด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

CROSS JOIN

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ
SELECT *
FROM district_2020 CROSS JOIN district_2035
ORDER BY district_2020.id, district_2035.id;

-- ์‰ผํ‘œ(,) ๋Œ€์ฒด
SELECT *
FROM district_2020, district_2035
ORDER BY district_2020.id, district_2035.id;

-- JOIN ... ON true ๋Œ€์ฒด
SELECT *
FROM district_2020 JOIN district_2035 ON true
ORDER BY district_2020.id, district_2035.id;
  • ์™ผ์ชฝ ํ…Œ์ด๋ธ”๊ณผ ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์„ ์ •๋ ฌํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํ–‰ ์กฐํ•ฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ๊ทœ๋ชจ๊ฐ€ ํฐ ํ…Œ์ด๋ธ”์—์„œ๋Š” CROSS JOIN์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ๊ฐ€๋ น ๊ฐ๊ฐ 25๋งŒ ๊ฐœ์˜ ํ–‰์„ ๊ฐ€์ง„ ๋‘ ํ…Œ์ด๋ธ”์„ CROSS JOINํ•œ๋‹ค๋ฉด 625์–ต ํ–‰์˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์ƒ์„ฑํ•œ๋‹ค.

NULL์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ์ธก๊ฐ’์ด ์žˆ๋Š” ํ–‰ ์ฐพ๊ธฐ

  • ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•  ๋•Œ๋งˆ๋‹ค ํ•œ ํ…Œ์ด๋ธ”์˜ ํ‚ค ๊ฐ’์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ๋‚˜ํƒ€๋‚˜๋Š”์ง€, ๋ˆ„๋ฝ๋œ ๊ฐ’์€ ์—†๋Š”์ง€ ์กฐ์‚ฌํ•ด์•ผ ํ•œ๋‹ค.
  • ์–ด๋–ค ์ด์œ ์—์„œ๋ผ๋„ ๋ถˆ์ผ์น˜๋Š” ์ƒ๊ธฐ๊ธฐ ๋งˆ๋ จ์ด๊ณ , ์–ด๋–ค ๋ฐ์ดํ„ฐ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒˆ์ œํ’ˆ ํ…Œ์ด๋ธ”์—๋Š” ์ด์ „ ์ œํ’ˆ ํ…Œ์ด๋ธ”์—๋Š” ์—†๋Š” ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ํ–‰์ด ๋งŽ์ง€ ์•Š๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ํ›‘์–ด๋ณผ ๋•Œ ๋ˆ„๋ฝ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํ–‰์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ํฐ ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฃจ๋Š” ๊ฒฝ์šฐ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  ํ–‰์„ ํ‘œ์‹œํ•˜๋Š” ํ•„ํ„ฐ๋ง ์ „๋žต์ด ํ•„์š”ํ•˜๋‹ค.
  • ์ด๋ฅผ ์œ„ํ•ด NULL ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.
1
2
3
4
SELECT *
FROM district_2020 LEFT JOIN district_2035
ON district_2020.id = district_2035.id
WHERE district_2035.id IS NULL;
idschool_2020idschool_2035
5Dover Middle Schoolย ย 
  • ๊ฒฐ๊ณผ๋Š” ์™ผ์ชฝ ํ…Œ์ด๋ธ”์˜ ํ–‰ ์ค‘ ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ’๋งŒ ํ‘œ์‹œํ•œ๋‹ค.
  • ์ด๋Ÿฐ ์กฐ์ธ์„ ์ผ๋ฐ˜์ ์œผ๋กœ ์•ˆํ‹ฐ ์กฐ์ธ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์˜ ํ–‰ ์ค‘ ์™ผ์ชฝ ํ…Œ์ด๋ธ”๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ํ‘œ์‹œํ•˜๋ ค๋ฉด RIGHT JOIN์œผ๋กœ ๋ฐ”๊พธ๊ณ , WHERE์ ˆ์„ district_2020.id IS NULL๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.

์„ธ ๊ฐ€์ง€ ์œ ํ˜•์˜ ํ…Œ์ด๋ธ” ๊ด€๊ณ„ ์ดํ•ดํ•˜๊ธฐ

  • ํ…Œ์ด๋ธ” ๊ด€๊ณ„์˜ ์„ธ ๊ฐ€์ง€ ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  1. ์ผ๋Œ€์ผ ๊ด€๊ณ„
    • ๋‘ ํ…Œ์ด๋ธ”์—์„œ ID๊ฐ€ ๊ฐ™์€ ํ–‰์ด ํ•˜๋‚˜์”ฉ๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.
  2. ์ผ๋Œ€๋‹ค ๊ด€๊ณ„
    • ํ•œ ํ…Œ์ด๋ธ”์˜ ํ‚ค ๊ฐ’์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์—ฌ๋Ÿฌ ์—ด๊ณผ ๋งค์นญ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.
    • ๊ฐ€๋ น ์ œ์กฐ์—…์ฒด ํ…Œ์ด๋ธ”๊ณผ ์ž๋™์ฐจ ํ…Œ์ด๋ธ”์„ ๊ทธ ์˜ˆ์‹œ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  3. ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„
    • ํ•œ ํ…Œ์ด๋ธ”์˜ ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ๊ณผ ๋งค์นญ๋˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

์กฐ์ธ์—์„œ ํŠน์ • ์—ด ์„ ํƒํ•˜๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- ์˜ค๋ฅ˜ ๋ฐœ์ƒ
SELECT id
FROM district_2020 LEFT JOIN district_2035
ON district_2020.id = district_2035.id;

-- ๋ณ„์นญ ๋ฏธ์‚ฌ์šฉ
SELECT district_2020.id,
	district_2020.school_2020,
	district_2035.school_2035
FROM district_2020 LEFT JOIN district_2035
ON district_2020.id = district_2035.id
ORDER BY district_2020.id;

-- ๋ณ„์นญ ์‚ฌ์šฉ
SELECT d20.id,
	d20.school_2020,
	d35.school_2035
FROM district_2020 AS d20 LEFT JOIN district_2035 AS d35
ON d20.id = d35.id
ORDER BY d20.id;
  • ํŠน์ • ์—ด์„ ์„ ํƒํ•˜๋ ค๋ฉด SELECT ํ‚ค์›Œ๋“œ ์ดํ›„ ์›ํ•˜๋Š” ์—ด ์ด๋ฆ„์„ ๋‚˜์—ดํ•œ๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” id๊ฐ€ ์†ํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„ ์–ด๋–ค ํ…Œ์ด๋ธ”์˜ id๋ฅผ ๋งํ•˜๋Š” ๊ฑด์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด district_2020.id์™€ ๊ฐ™์ด ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.
  • AS ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ AS ํ‚ค์›Œ๋“œ๋Š” ์ƒ๋žตํ•ด๋„ ๋œ๋‹ค.

์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ์กฐ์ธํ•˜๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CREATE TABLE district_2020_enrollment (
	id integer,
	enrollment integer
);

CREATE TABLE district_2020_grades (
	id integer,
	grades varchar(10)
);

INSERT INTO district_2020_enrollment
VALUES
	(1, 360),
	(2, 1001),
	(5, 450),
	(6, 927);

INSERT INTO district_2020_grades
VALUES
	(1, 'K-3'),
	(2, '9-12'),
	(5, '6-8'),
	(6, '9-12');
  • ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„  ์˜ˆ์ œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜์ž.
1
2
3
4
5
6
7
8
9
SELECT d20.id,
	d20.school_2020,
	en.enrollment,
	gr.grades
FROM district_2020 AS d20 JOIN district_2020_enrollment AS en
	ON d20.id = en.id
JOIN district_2020_grades AS gr
	ON d20.id = gr.id
ORDER BY d20.id;
idschool_2020enrollmentgrades
1Oak Street School360K-3
2Roosevelt High School1,0019-12
5Dover Middle School4506-8
6Webutuck High School9279-12
  • ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€ ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ์— ๋” ๋งŽ์€ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž๋กœ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๊ฒฐํ•ฉํ•˜๊ธฐ

  • ์–ด๋–ค ์ธ์Šคํ„ด์Šค๋Š” ์กฐ์ธ ๊ฒฐ๊ณผ์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ํ…Œ์ด๋ธ”์˜ ์—ด์ด ๋‚˜๋ž€ํžˆ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋กœ ์ถœ๋ ฅ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ •๋ ฌํ•ด์•ผ ํ•œ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ANSI SQL ํ‘œ์ค€์ธ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž UNION, INTERSECT, EXCEPT๊ฐ€ ์žˆ๋‹ค.
  1. UNION
    • ๋‘ ์ฟผ๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ๋‘ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์˜ ํ–‰์„ ์ฒซ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ๊ฒฐํ•ฉ๋œ ๊ณ ์œ  ํ–‰ ์ง‘ํ•ฉ์„ ์ƒ์„ฑํ•œ๋‹ค.
    • ๊ตฌ๋ฌธ์„ UNION ALL๋กœ ์ˆ˜์ •ํ•˜๋ฉด ์ค‘๋ณต์„ ํฌํ•จํ•œ ๋ชจ๋“  ํ–‰์ด ๋ฐ˜ํ™˜๋œ๋‹ค.
  2. INTERSECT
    • ๋‘ ์ฟผ๋ฆฌ์— ๋ชจ๋‘ ์กด์žฌํ•˜๋Š” ํ–‰๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ๋‹ค.
  3. EXCEPT
    • ์ฒซ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—๋Š” ์žˆ์ง€๋งŒ, ๋‘ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—๋Š” ์—†๋Š” ํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ์ค‘๋ณต์ด ์ œ๊ฑฐ๋œ๋‹ค.

UNION๊ณผ UNION ALL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-- UNION
SELECT * FROM district_2020

UNION

SELECT * FROM district_2035
ORDER BY id;

-- UNION ALL
SELECT * FROM district_2020

UNION ALL

SELECT * FROM district_2035
ORDER BY id;

-- UNION ์ฟผ๋ฆฌ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•
SELECT '2020' AS year,
	school_2020 AS school
FROM district_2020

UNION ALL

SELECT '2035' AS year,
	school_2035
FROM district_2035
ORDER BY school, year;
  • ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด UNION, ์ค‘๋ณต์„ ํฌํ•จํ•˜๋ ค๋ฉด UNION ALL, ๋˜ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜์—ฌ ํ•ฉ์น˜๋Š” ๊ณผ์ •์—์„œ ์—ด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

INTERSECT์™€ EXCEPT

1
2
3
4
5
6
7
8
9
SELECT * FROM district_2020
INTERSECT
SELECT * FROM district_2035
ORDER BY id;

SELECT * FROM district_2020
EXCEPT
SELECT * FROM district_2035
ORDER BY id;
idschool_2020
1Oak Street School
2Roosevelt High School
6Webutuck High School
  • INTERSECT ํ‚ค์›Œ๋“œ๋Š” ๋‘ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ณตํ†ต ๋ฐ์ดํ„ฐ๋งŒ ์ถœ๋ ฅํ•œ๋‹ค.
idschool_2020
5Dover Middle School
  • EXCEPT ํ‚ค์›Œ๋“œ๋Š” ์ฒซ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์— ์žˆ์ง€๋งŒ, ๋‘ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—๋Š” ์—†๋Š” ํ–‰๋งŒ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ๋‹ค.
  • ์ด๋Ÿฌํ•œ ํ‚ค์›Œ๋“œ ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

์กฐ์ธ๋œ ํ…Œ์ด๋ธ” ์—ด์—์„œ ์ˆ˜ํ•™ ๊ณ„์‚ฐ ์ˆ˜ํ–‰ํ•˜๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE TABLE us_counties_pop_est_2010 (
	state_fips text,
	county_fips text,
	region smallint, 
	state_name text,
	county_name text,
	estimates_base_2010 integer,
	CONSTRAINT counties_2010_key PRIMARY KEY (state_fips, county_fips)
);

COPY us_counties_pop_est_2010
FROM 'C:\YourDirectory\us_counties_pop_est_2010.csv'
WITH (FORMAT CSV, HEADER);

SELECT c2019.county_name,
	c2019.state_name,
	c2019.pop_est_2019 AS pop_2019,
	c2010.estimates_base_2010 AS pop_2010,
	c2019.pop_est_2019 - c2010.estimates_base_2010 AS raw_change,
	round( (c2019.pop_est_2019::numeric - c2010.estimates_base_2010)
		/ c2010.estimates_base_2010 * 100, 1 ) AS pct_change
FROM us_counties_pop_est_2019 AS c2019
	JOIN us_counties_pop_est_2010 AS c2010
ON c2019.state_fips = c2010.state_fips
	AND c2019.county_fips = c2010.county_fips
ORDER BY pct_change DESC;
  • ์ˆ˜ํ•™ ํ•จ์ˆ˜๋Š” ์กฐ์ธ๋œ ํ…Œ์ด๋ธ”์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
county_namestate_namepop_2019pop_2010raw_changepct_change
McKenzie CountyNorth Dakota15,0246,3598,665136.3
Loving CountyTexas1698287106.1
Williams CountyNorth Dakota37,58922,39915,19067.8
Hays CountyTexas230,191157,10373,08846.5
Wasatch CountyUtah34,09123,52510,56644.9
Comal CountyTexas156,209108,52047,68943.9
Trousdale CountyTennessee11,2847,8643,42043.5
  • raw_change ์—ด์€ 2019๋…„ ์ถ”์ •์น˜์—์„œ 2010๋…„ ์ถ”์ •์น˜๋ฅผ ๋บ€ ๊ฐ’์ด๋‹ค.
  • pct_change ์—ด์€ 2010๋…„๊ณผ 2019๋…„ ์‚ฌ์ด์˜ ๋ณ€ํ™”์œจ์„ ๊ณ„์‚ฐํ•œ ๊ฐ’์ด๋‹ค.
  • ๋‘ ํ…Œ์ด๋ธ”์—์„œ ์ฃผ ์ฝ”๋“œ์™€ ์นด์šดํ‹ฐ ์ฝ”๋“œ์˜ ์กฐํ•ฉ์ด ๊ณ ์œ ํ•œ ์นด์šดํ‹ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์—, AND ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋‘ ์กฐ๊ฑด์„ ๊ฒฐํ•ฉํ•œ๋‹ค.
This post is licensed under CC BY 4.0 by the author.