Question 1. Docker ์ฒซ ์‹คํ–‰ ์ดํ•ดํ•˜๊ธฐ

Run docker with the python:3.12.8 image in an interactive mode, use the entrypoint bash.

์ด ์ด๋ฏธ์ง€์—์„œ pip์˜ ๋ฒ„์ „์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • 24.3.1
  • 24.2.1
  • 23.3.1
  • 23.2.1

Question 2. Docker ๋„คํŠธ์›Œํ‚น๊ณผ docker-compose ์ดํ•ดํ•˜๊ธฐ

๋‹ค์Œ docker-compose.yaml์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, pgadmin์ด postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” hostname๊ณผ port๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

services:
  **db**:
    container_name: **postgres**
    image: postgres:17-alpine
    environment:
      POSTGRES_USER: 'postgres'
      POSTGRES_PASSWORD: 'postgres'
      POSTGRES_DB: 'ny_taxi'
    ports:
      - **'5433:5432'**
    volumes:
      - vol-pgdata:/var/lib/postgresql/data
 
  pgadmin:
    **container_name: pgadmin**
    image: dpage/pgadmin4:latest
    environment:
      PGADMIN_DEFAULT_EMAIL: "pgadmin@pgadmin.com"
      PGADMIN_DEFAULT_PASSWORD: "pgadmin"
    **ports:
      - "8080:80"**
    volumes:
      - vol-pgadmin_data:/var/lib/pgadmin
 
volumes:
  vol-pgdata:
    name: vol-pgdata
  vol-pgadmin_data:
    name: vol-pgadmin_data
  • postgres:5433
  • localhost:5432
  • db:5433
  • postgres:5432
  • db:5432

Question 3. ์šดํ–‰ ๊ตฌ๊ฐ„ ์ˆ˜

**2019๋…„ 10์›” 1์ผ(ํฌํ•จ)๋ถ€ํ„ฐ 2019๋…„ 11์›” 1์ผ(์ œ์™ธ)**๊นŒ์ง€ ๊ธฐ๊ฐ„ ๋™์•ˆ, ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์šดํ–‰์ด ๋ช‡ ๋ฒˆ ์žˆ์—ˆ๋‚˜์š”:

-- 1. ์ค‘๋ณต ์ฒดํฌ
SELECT 
    COUNT(*) AS cnt
FROM green_tripdata
GROUP BY 
    "VendorID", "lpep_pickup_datetime",
    "lpep_dropoff_datetime", "store_and_fwd_flag",
    "RatecodeID", "PULocationID",
    "DOLocationID", "passenger_count",
    "trip_distance", "fare_amount",
    "extra", "mta_tax",
    "tip_amount", "tolls_amount",
    "ehail_fee", "improvement_surcharge", "total_amount",
    "payment_type", "trip_type", "congestion_surcharge"
HAVING
    COUNT(*) > 1;
-- 2. ์šดํ–‰์ˆ˜ ํ™•์ธ
SELECT 
    SUM(CASE WHEN Trip_distance <= 1 THEN 1 END) AS "1. 1๋งˆ์ผ ์ดํ•˜",
    SUM(CASE WHEN Trip_distance > 1 AND Trip_distance <= 3 THEN 1 END) AS "2. 1๋งˆ์ผ ์ดˆ๊ณผ 3๋งˆ์ผ ์ดํ•˜",
    SUM(CASE WHEN Trip_distance > 3 AND Trip_distance <= 7 THEN 1 END) AS "3. 3๋งˆ์ผ ์ดˆ๊ณผ 7๋งˆ์ผ ์ดํ•˜",
    SUM(CASE WHEN Trip_distance > 7 AND Trip_distance <= 10 THEN 1 END) AS "4. 7๋งˆ์ผ ์ดˆ๊ณผ 10๋งˆ์ผ ์ดํ•˜",
    SUM(CASE WHEN Trip_distance > 10 THEN 1 END) AS "5. 10๋งˆ์ผ ์ดˆ๊ณผ"
FROM green_tripdata
WHERE lpep_pickup_datetime >= '2019-10-01' AND lpep_dropoff_datetime< '2019-11-01';
 
**-- "1. 1๋งˆ์ผ ์ดํ•˜"	"2. 1๋งˆ์ผ ์ดˆ๊ณผ 3๋งˆ์ผ ์ดํ•˜"	"3. 3๋งˆ์ผ ์ดˆ๊ณผ 7๋งˆ์ผ ์ดํ•˜"	"4. 7๋งˆ์ผ ์ดˆ๊ณผ 10๋งˆ์ผ ์ดํ•˜"	"5. 10๋งˆ์ผ ์ดˆ๊ณผ"
-- 104802	198924	109603	27678	35189**
 
  1. 1๋งˆ์ผ ์ดํ•˜
  2. 1๋งˆ์ผ ์ดˆ๊ณผ 3๋งˆ์ผ ์ดํ•˜
  3. 3๋งˆ์ผ ์ดˆ๊ณผ 7๋งˆ์ผ ์ดํ•˜
  4. 7๋งˆ์ผ ์ดˆ๊ณผ 10๋งˆ์ผ ์ดํ•˜
  5. 10๋งˆ์ผ ์ดˆ๊ณผ

๋‹ต:

  • 104,802; 197,670; 110,612; 27,831; 35,281
  • 104,802; 198,924; 109,603; 27,678; 35,189
  • 104,793; 201,407; 110,612; 27,831; 35,281
  • 104,793; 202,661; 109,603; 27,678; 35,189
  • 104,838; 199,013; 109,645; 27,688; 35,202

Question 4. ์ผ๋ณ„ ์ตœ์žฅ ์šดํ–‰

์šดํ–‰ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๊ธด ์Šน์ฐจ์ผ์€ ์–ธ์ œ์˜€๋‚˜์š”? ๊ณ„์‚ฐ ์‹œ ์Šน์ฐจ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ํ•˜์„ธ์š”.

SELECT DATE(lpep_pickup_datetime)
FROM green_tripdata
WHERE Trip_distance = (
	SELECT MAX(Trip_distance) FROM green_tripdata
)
-- 2019-10-31

ํŒ: ๊ฐ ๋‚ ์งœ๋ณ„๋กœ ๊ฐ€์žฅ ๊ธด ๊ฑฐ๋ฆฌ์˜ ํ•œ ์šดํ–‰๋งŒ ๊ณ ๋ คํ•˜์„ธ์š”.

  • 2019-10-11
  • 2019-10-24
  • 2019-10-26
  • 2019-10-31

Question 5. ์ƒ์œ„ 3๊ฐœ ์Šน์ฐจ ๊ตฌ์—ญ

WITH trip AS (
	SELECT "PULocationID",
			SUM(total_amount) AS "total_amount"
	FROM green_tripdata
	WHERE DATE(lpep_pickup_datetime) = '2019-10-18'
	GROUP BY "PULocationID"
	ORDER BY "total_amount" DESC
)
SELECT zones."Zone" AS "Zone",
       trip."PULocationID" AS "PULocationID",
	   trip."total_amount" AS "total_amount"
FROM zones 
INNER JOIN trip ON trip."PULocationID" = zones."LocationID"
ORDER BY "total_amount" DESC
LIMIT 3;
 
-- "Zone"	"PULocationID"	"total_amount"
-- "East Harlem North"	74	18686.680000000084
-- "East Harlem South"	75	16797.260000000064
-- "Morningside Heights"	166	13029.790000000032

2019-10-18์ผ์— total_amount๊ฐ€ 13,000์„ ์ดˆ๊ณผํ•œ ์ƒ์œ„ ์Šน์ฐจ ์œ„์น˜๋Š” ์–ด๋””์ธ๊ฐ€์š”?

๋‚ ์งœ ํ•„ํ„ฐ๋ง ์‹œ lpep_pickup_datetime๋งŒ ๊ณ ๋ คํ•˜์„ธ์š”.

  • East Harlem North, East Harlem South, Morningside Heights
  • East Harlem North, Morningside Heights
  • Morningside Heights, Astoria Park, East Harlem South
  • Bedford, East Harlem North, Astoria Park

Question 6. ์ตœ๋Œ€ ํŒ

WITH trip AS (
    SELECT "PULocationID",
           "DOLocationID",
           "tip_amount"
    FROM green_tripdata
    WHERE DATE(lpep_pickup_datetime) >= '2019-10-01' AND DATE(lpep_pickup_datetime) < '2019-11-01'
    ORDER BY "tip_amount" DESC
)
SELECT PUZone."Zone" AS "PULocation",
       DOZone."Zone" AS "DOLocation",
       trip."tip_amount" AS "tip_amount"
FROM trip
INNER JOIN zones AS PUZone ON trip."PULocationID" = PUZone."LocationID"
INNER JOIN zones AS DOZone ON trip."DOLocationID" = DOZone."LocationID"
WHERE PUZone."Zone" = 'East Harlem North'
ORDER BY "tip_amount" DESC
LIMIT 1;
 
-- "JFK Airport"

2019๋…„ 10์›”์— โ€œEast Harlem Northโ€ ๊ตฌ์—ญ์—์„œ ์Šน์ฐจํ•œ ์Šน๊ฐ๋“ค ์ค‘์—์„œ ์–ด๋А ํ•˜์ฐจ ๊ตฌ์—ญ์—์„œ ๊ฐ€์žฅ ํฐ ํŒ์ด ์žˆ์—ˆ๋‚˜์š”?

์ฃผ์˜: trip์ด ์•„๋‹Œ tip์ž…๋‹ˆ๋‹ค. ๊ตฌ์—ญ์˜ ID๊ฐ€ ์•„๋‹Œ ์ด๋ฆ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Yorkville West
  • JFK Airport
  • East Harlem North
  • East Harlem South

Question 7. Terraform ์›Œํฌํ”Œ๋กœ์šฐ

๋‹ค์Œ ์ค‘ ์–ด๋–ค ์ˆœ์„œ๊ฐ€ ๊ฐ๊ฐ ๋‹ค์Œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์„ค๋ช…ํ•˜๋‚˜์š”:

  1. ๊ณต๊ธ‰์ž ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๋ฐฑ์—”๋“œ ์„ค์ •
  2. ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ƒ์„ฑ ๋ฐ ๊ณ„ํš ์ž๋™ ์‹คํ–‰
  3. terraform์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์ œ๊ฑฐ

๋‹ต:

  • terraform import, terraform apply -y, terraform destroy
  • teraform init, terraform plan -auto-apply, terraform rm
  • terraform init, terraform run -auto-approve, terraform destroy
  • **terraform init**, **terraform apply -auto-approve, terraform destroy**
  • terraform import, terraform apply -y, terraform rm