๐Ÿ˜Ž
Onemorebottlee's TIL
  • ๐Ÿค“Introduce
  • ๐Ÿ“–DevLog
    • ๐Ÿ’ฃError
      • npm ERR! Cannot read properties of null (reading 'edgesOut')
      • git
        • src refspec main does not match any
      • NextJS
        • No img element
        • ReferenceError : document is not defined
        • `next/image` Un-configured Host
  • ๐Ÿ“บLecture
    • Nomad Coders
      • ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๋ฆฌ๋•์Šค 101
        • #0 Introduction
        • #1 PURE REDUX: COUNTER
        • #2 PURE REDUX: TO DO LIST
        • #3 REACT REDUX
        • #4 Redux Toolkit
      • ๋ฐ”๋‹๋ผ JS๋กœ ๊ทธ๋ฆผ ์•ฑ ๋งŒ๋“ค๊ธฐ
      • React JS ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค
        • #2 Styled Componnents
        • #3 TypeScript
        • #4 Crypto Tracker
        • #5 State Management
        • #6 Trello
        • #7 ANIMATIONS
      • Next.js ์‹œ์ž‘ํ•˜๊ธฐ
        • #0 INTRODUCTION
        • #1 FRAMEWORK OVERVIEW
        • #2 PRACTICE PROJECT
      • Typescript๋กœ ๋ธ”๋ก์ฒด์ธ ๋งŒ๋“ค๊ธฐ
        • #1 Introduction
        • #2 Overview of TypeScript
        • #3 Functions
        • #4 Classes and Interfaces
        • #5 TypeScript Blockchain
      • SQL Master Class
        • #1 Introduction
        • #2 SQLite
        • #3 Data Definition Language
        • #4 Data Manipulation Language
        • #5 Subqueries and CTEs
        • #6 Indexes
        • #7 MySQL
        • #8 Foreign Keys
        • #9 JOINS
        • #10 Nomalization
        • #11 Events & Triggers
        • #12 Full-Text Indexes
        • #13 PostgreSQL
        • #14 Functions And Procedures
        • #15 Transactions
        • #16 Data Control Language
        • #17 PostgreSQL JSON Columns
        • #18 PostgreSQL Extensions
        • #19 MongoDB
        • #20 REDIS
        • #21 Javascript and Python Drivers
    • Udemy
      • TypeScript ๋งˆ์Šคํ„ฐ with Webpack & React
        • [S1] ์†Œ๊ฐœ
        • [S2] ์„ค์น˜ ๋ฐ ์„ค์ •
        • [S3] ํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜ ๊ธฐ์ดˆ
        • [S4] ํ•จ์ˆ˜
        • [S5] ๊ฐ์ฒด ํƒ€์ž…
        • [S6] ๋ฐฐ์—ด ํƒ€์ž…
        • [S7] ์œ ๋‹ˆ์˜จํƒ€์ž…
        • [S8] Tuple & Enum
        • [S9] ์ธํ„ฐํŽ˜์ด์Šค
        • [S10] TypeScript ์ปดํŒŒ์ผ๋Ÿฌ
        • [S11] ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ DOM, ํƒ€์ž… ๋‹จ์–ธ, ๊ทธ๋ฆฌ๊ณ  ๋” ๋งŽ์€ ๋‚ด์šฉ
        • [S12] Class
        • [S13] TS Class
        • [S14] Generics โญโญโญโญโญ
        • [S15] Narrowing
        • [S16] Type Declarations
        • [S17] Module
        • [S18] Webpack ๊ณผ TypeScript
        • [S19] React
    • ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ์ปดํ“จํ„ฐ ๊ณผํ•™ CS50
      • 1. ์ปดํ“จํŒ… ์‚ฌ๊ณ 
      • 2. C์–ธ์–ด
      • 3. ๋ฐฐ์—ด
      • 4. ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • 5. ๋ฉ”๋ชจ๋ฆฌ
      • 6. ์ž๋ฃŒ๊ตฌ์กฐ
    • ์ƒํ™œ์ฝ”๋”ฉ
      • DATABASE
        • DATABASE1
  • ๐Ÿ“šBook
    • ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive
      • 1์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      • 2์žฅ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€?
      • 3์žฅ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์‹คํ–‰ ๋ฐฉ๋ฒ•
      • 4์žฅ ๋ณ€์ˆ˜
      • 5์žฅ ํ‘œํ˜„์‹๊ณผ ๋ฌธ
      • 6์žฅ ๋ฐ์ดํ„ฐ ํƒ€์ž…
      • 7์žฅ ์—ฐ์‚ฐ์ž
      • 8์žฅ ์ œ์–ด๋ฌธ
      • 9์žฅ ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋‹จ์ถ• ํ‰๊ฐ€ โญโญโญ
      • 10์žฅ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด
      • 11์žฅ ์›์‹œ ๊ฐ’๊ณผ ๊ฐ์ฒด์˜ ๋น„๊ต
      • 12์žฅ ํ•จ์ˆ˜ โญโญโญโญ
      • 13์žฅ ์Šค์ฝ”ํ”„
      • 14์žฅ ์ „์—ญ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์ 
      • 15์žฅ let, const ํ‚ค์›Œ๋“œ์™€ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ โญโญโญ
      • 16์žฅ ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ
      • 17์žฅ ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ
      • 18์žฅ ํ•จ์ˆ˜์™€ ์ผ๊ธ‰ ๊ฐ์ฒด โญโญ
      • 19์žฅ ํ”„๋กœํ† ํƒ€์ž… โญโญโญโญโญ
      • 20์žฅ strict mode
      • 21์žฅ ๋นŒํŠธ์ธ ๊ฐ์ฒด โญ
      • 22์žฅ this โญโญโญ
      • 23์žฅ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ โญโญโญโญโญโญโญโญโญโญ
      • 24์žฅ ํด๋กœ์ € โญโญโญโญโญโญโญ
      • 25์žฅ ํด๋ž˜์Šค
      • 26์žฅ ES6 ํ•จ์ˆ˜์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ
      • 27์žฅ ๋ฐฐ์—ด โญโญโญ
      • 28์žฅ Number
      • 29์žฅ Math
      • 30์žฅ Date
      • 31์žฅ RegExp
      • 32์žฅ String
      • 33์žฅ 7๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ํƒ€์ž… Symbol
      • 34์žฅ ์ดํ„ฐ๋Ÿฌ๋ธ”
      • 35์žฅ ์Šคํ”„๋ ˆ๋“œ ๋ฌธ๋ฒ•
      • 36์žฅ ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง ํ• ๋‹น
      • 37์žฅ Set๊ณผ Map
      • 38์žฅ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ๊ณผ์ •โญโญโญโญโญโญโญโญ
      • 39์žฅ DOM โญโญโญโญโญโญโญโญโญโญโญ
      • 40์žฅ ์ด๋ฒคํŠธโญโญโญโญโญโญโญโญโญโญโญ
      • 41์žฅ ํƒ€์ด๋จธ
      • 42์žฅ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ โญโญโญโญโญโญโญโญ
      • 43์žฅ Ajax
      • 44์žฅ REST API
      • 45์žฅ ํ”„๋กœ๋ฏธ์Šค
      • 46์žฅ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ async/await
      • 47์žฅ ์—๋Ÿฌ ์ฒ˜๋ฆฌ
      • 48์žฅ ๋ชจ๋“ˆ
      • 49์žฅ Babel๊ณผ Webpack์„ ์ด์šฉํ•œ ES6+/ES.NEXT ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
    • ๋Ÿฌ๋‹ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
      • Ch.1 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ
      • Ch.2 ํƒ€์ž… ์‹œ์Šคํ…œ
      • Ch.3 ์œ ๋‹ˆ์–ธ๊ณผ ๋ฆฌํ„ฐ๋Ÿด
      • Ch.4 ๊ฐ์ฒด
      • Ch.5 ํ•จ์ˆ˜
      • Ch.6 ๋ฐฐ์—ด
      • Ch.7 ์ธํ„ฐํŽ˜์ด์Šค
      • Ch.8 ํด๋ž˜์Šค
      • Ch.9 ํƒ€์ž… ์ œํ•œ์ž
      • Ch.10 ์ œ๋„ค๋ฆญ
      • Ch.11 ์„ ์–ธ ํŒŒ์ผ
      • Ch.12 IDE ๊ธฐ๋Šฅ ์‚ฌ์šฉ
      • Ch.13 ๊ตฌ์„ฑ ์˜ต์…˜
      • Ch.14 ๊ตฌ๋ฌธ ํ™•์žฅ
      • Ch.15 ํƒ€์ž… ์šด์˜
      • ์šฉ์–ด ์‚ฌ์ „
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์™„๋ฒฝ ๊ฐ€์ด๋“œ
    • SQL in 10 Minutes
      • 1์žฅ SQL ์ดํ•ดํ•˜๊ธฐ
      • 2์žฅ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
      • 3์žฅ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ ์ •๋ ฌํ•˜๊ธฐ
      • 4์žฅ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง
      • 5์žฅ ๊ณ ๊ธ‰ ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง
      • 6์žฅ ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž๋ฅผ ์ด์šฉํ•œ ํ•„ํ„ฐ๋ง
      • 7์žฅ ๊ณ„์‚ฐ ํ•„๋“œ ์ƒ์„ฑํ•˜๊ธฐ
      • 8์žฅ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ
      • 9์žฅ ๋ฐ์ดํ„ฐ ์š”์•ฝ
      • 10์žฅ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ•‘
      • 11์žฅ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ
      • 12์žฅ ํ…Œ์ด๋ธ” ์กฐ์ธ
      • 13์žฅ ๊ณ ๊ธ‰ ํ…Œ์ด๋ธ” ์กฐ์ธ ์ƒ์„ฑํ•˜๊ธฐ
      • 14์žฅ ์ฟผ๋ฆฌ ๊ฒฐํ•ฉํ•˜๊ธฐ
      • 15์žฅ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…ํ•˜๊ธฐ
      • 16์žฅ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ์™€ ์‚ญ์ œ
      • 17์žฅ ํ…Œ์ด๋ธ” ์ƒ์„ฑ๊ณผ ์กฐ์ž‘
      • 18์žฅ ๋ทฐ ์‚ฌ์šฉํ•˜๊ธฐ
      • 19์žฅ ์ €์žฅ ํ”„๋กœ์‹œ์ € ์‚ฌ์šฉํ•˜๊ธฐ
      • 20์žฅ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๊ด€๋ฆฌํ•˜๊ธฐ
      • 21์žฅ ์ปค์„œ ์‚ฌ์šฉํ•˜๊ธฐ
      • 22์žฅ ๊ณ ๊ธ‰ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์˜ต์…˜
    • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ
      • 4 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
        • 4.1 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ
    • 2023 ์ด๊ธฐ์  SQL ๊ฐœ๋ฐœ์ž ์ด๋ก ์„œ + ๊ธฐ์ถœ๋ฌธ์ œ
      • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์ดํ•ด
        • S1. ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง
  • ๐Ÿ’ปStudy
    • CS ์ง€์‹ ๋ฐœํ‘œ
      • 1ํšŒ์ฐจ
      • 2ํšŒ์ฐจ
      • 3ํšŒ์ฐจ
      • 4ํšŒ์ฐจ
      • 5ํšŒ์ฐจ
      • 6ํšŒ์ฐจ
      • 7ํšŒ์ฐจ
      • 8ํšŒ์ฐจ
      • 9ํšŒ์ฐจ
    • TypeScript Exercises
      • Ex 1
      • Ex 2
      • Ex 3
      • Ex 4
      • Ex 5
      • Ex 6
      • Ex 7
      • Ex 8
      • Ex 9
      • Ex 10
  • ๐Ÿ”„ETC
    • Article
      • Atomic Design Pattern
      • ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž
    • DATABASE
      • Oracle
        • CEIL() & FLOOR() - ์†Œ์ˆ˜์  ์˜ฌ๋ฆผ & ๋‚ด๋ฆผ
        • DUAL ํ…Œ์ด๋ธ” - ์ž„์‹œ ํ…Œ์ด๋ธ”๋กœ ๊ฒฐ๊ณผ ํ™•์ธํ•˜๊ธฐ
    • Ubuntu
      • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—…๋ฐ์ดํŠธ
Powered by GitBook
On this page
  • #4.0 Introduction
  • #4.1 Update Commands
  • #4.2 SELECT Command
  • #4.3 FROM Clause
  • #4.4 SELECT Expressions
  • #4.5 Movies Database
  • #4.6 WHERE Clause
  • #4.7 WHERE Predicates
  • #4.8 SELECT Case
  • #4.9 ORDER BY Clause
  • #4.10 LIMIT and OFFSET Clauses
  • #4.11 GROUP BY Clause
  • 4.12 GROUP BY Gothas
  • #4.13 HAVING Clause
  • #4.14 Super Practice Part 1
  • #4.15 Super Practice Part 2
  • #4.16 Super Practice Part 3
  • #4.17 Views

Was this helpful?

  1. Lecture
  2. Nomad Coders
  3. SQL Master Class

#4 Data Manipulation Language

#4.0 Introduction

DML Data Manipulation Language

๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€(์‚ฝ์ž…), ์‚ญ์ œ, ์ˆ˜์ •(์—…๋ฐ์ดํŠธ) ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

Update / Query ๋กœ ์ข…๋ฅ˜๊ฐ€ ๋‚˜๋‰จ

#4.1 Update Commands

Update ๋ช…๋ น

  • INSERT INTO

  • UPDATE

  • DELETE

UPDATE movies SET rating = 10; -- ๋ชจ๋“  rating ๊ฐ’์ด 10์œผ๋กœ ๋ณ€๊ฒฝ๋จ

DELETE movies; -- ๋ชจ๋“  movies ๋ฅผ ์‚ญ์ œํ•จ

-- WHERE ๋ฅผ ์‚ฌ์šฉํ•ด ์œ„์น˜๋ฅผ ์ขํž˜ & AND ๋“ฑ ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ

UPDATE movies SET rating = 10 WHERE title = 'The Lord of The Rings';
UPDATE movies SET rating = rating + 2 WHERE title = 'The Lord of The Rings';
-- ใ„ด์—…๋ฐ์ดํŠธํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Œ

DELETE movies WHERE movie_id = 2;

#4.2 SELECT Command

SELECT - Table์„ ๊ฒฐ๊ณผ๋ฌผ๋กœ ์ œ๊ณตํ•˜๋Š” ๋ช…๋ น

#4.3 FROM Clause

FROM table์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

SELECT title, rating FROM movies;
-- FROM - ๋จผ์ € ์‹คํ–‰๋˜๊ณ  SELECT - ๋‚˜์ค‘์— ์‹คํ–‰๋จ, ๊ฒฐ๊ณผ๋ฅผ ์žฌ๊ตฌ์„ฑ

#4.4 SELECT Expressions

SELECT
     REPLACE(title, ': Part One', ' I') AS title,
    rating * 2 AS double_rating,
    UPPER(overview) AS overview_upp
FROM movies;

-- ๊ณผ ๊ฐ™์ด custom table ์ƒ์„ฑ ๊ฐ€๋Šฅ

#4.5 Movies Database

#4.6 WHERE Clause

WHERE ์„ ํƒ๋  ๋ฐ์ดํ„ฐ ์ขํžˆ๊ธฐ

  • NULL ๊ฐ’ ํ™•์ธ์€ IS NULL

  • AND _ ๋ชจ๋“  ์กฐ๊ฑด์ด ์ฐธ์ด์–ด์•ผ ํ•จ

  • OR _ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ดํฌํ•จ

#4.7 WHERE Predicates

BETWEEN 2024 AND 2020; -- X ์ž‘์€ ์ˆ˜๊ฐ€ ์•ž์œผ๋กœ ์™€์•ผํ•จ
BETWEEN 2020 AND 2024;

IN (); -- () ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋งŒ ํ™•์ธ OR ๊ฐœ๋…

ํŒจํ„ด ๋งค์นญ

SELECT *
FROM movies
WHERE title LIKE 'The%' -- The ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋‹จ์–ด
WHERE title LIKE 'The ___ %';

#4.8 SELECT Case

ํŠน์ • ๊ธฐ์ค€๊ณผ ์กฐ๊ฑด์— ๋งž์ถ˜ ์ปฌ๋Ÿผ ์ƒ์„ฑ

CASE ํ‘œํ˜„์‹์€ ์กฐ๊ฑด ๋ชฉ๋ก์„ ํ‰๊ฐ€ํ•˜๊ณ  ํ‰๊ฐ€ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ํ‘œํ˜„์‹์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

SELECT title,
 CASE WHEN rating >= 8 THEN 'GOOD'
       WHEN rating <= THEN 'BAD'
       ELSE '00'
       END AS good_or_not 
FROM 

#4.9 ORDER BY Clause

ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

ASC | DESC

๋‘˜ ์ด์ƒ์˜ ์—ด์„ ์ •๋ ฌํ•  ๋•Œ๋Š” ์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด์œผ๋กœ ์ •๋ ฌ ํ›„ ๋‚˜์ค‘ ์กฐ๊ฑด ์ •๋ ฌ

SELECT *,
FROM movies
ORDER BY release_date DESC, revenue DESC

#4.10 LIMIT and OFFSET Clauses

์ฟผ๋ฆฌ ์ œํ•œํ•ด์•ผ ํ•˜๋Š” ์ด์œ : ์„ฑ๋Šฅ์ ์œผ๋กœ์ง๋ฉดํ•˜๋Š” ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ex_ ๋ฐฑ๋งŒ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ๊ฐ€?

SELECT * -- 3rd ๊ทธ์ค‘ *์—ด์„ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ
FROM moives -- 1st movies ํ…Œ์ด๋ธ”์—์„œ
WHERE XX -- 2nd XX ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด
ORDER BY YY -- 4th YY ์ˆœ์„œ์—๋”ฐ๋ผ
LIMIT 5; -- 6th 5๊ฐœ์˜ row๋งŒ
OFFSET 5; -- 5th 5๊ฐœ๋ฅผ ์Šคํ‚ตํ•˜๊ณ 

#4.11 GROUP BY Clause

GROUP BY - ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ถ„๋ช…ํžˆ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ์ธ์‚ฌ์ดํŠธ ์ถ”์ถœ ๊ฐ€๋Šฅ

ใ„ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋ณ‘ํ•ฉ

์ง‘๊ณ„ ํ•จ์ˆ˜ - SUM / AVG ๋“ฑ ์—ฌ๋Ÿฌ row ๊ฐ’์„ ์ง‘๊ณ„

SELECT director, SUM(revenue) as TOTAL_revenue-- 4rd
FROM movies -- 1st
WHERE -- 2nd
    director IS NOT NULL
    AND revenue IS NOT NULL
GROUP BY director -- 3th
ORDER BY total_revenue DESC; -- 5th

SELECT release_date, ROUND(AVG(rating), 2) AS avg_rating -- 4rd
FROM movies -- 1st
WHERE -- 2nd
    rating IS NOT NULL AND release_date IS NOT NULL
GROUP BY release_date -- 3th
ORDER BY avg_rating DESC; -- 5th

4.12 GROUP BY Gothas

  • SQLite

  • ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ณ‘ํ•ฉ๋œ๋‹ค.

  • GROUP BY ํ•˜์ง€ ์•Š์€ column์„ SELECT ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ’์€ ์–ป์ง€๋งŒ ๊ฐ ๊ทธ๋ฃน์˜ ๋งˆ์ง€๋ง‰ ํ–‰์„ ๊ฐ€์ ธ์˜จ๋‹ค.

  • GROUP BY๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๊ทธ๋ฃน ์ž์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „์ฒด๊ฐ€ ๊ทธ๋ฃน์ด ๋œ๋‹ค.

#4.13 HAVING Clause

HAVING - WHERE์™€ ๋น„์Šทํ•˜๊ฒŒ row๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ธฐ๋Šฅ, ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„์ด ๋‹ค๋ฆ„

ใ„ด WHERE ๋‹ค์Œ, GROUP BY ๋‹ค์Œ์— ์‹คํ–‰๋จ

ใ„ด GROUP BY์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

SELECT release_date, ROUND(AVG(rating), 2) AS avg_rating -- 5th
FROM movies -- 1st
WHERE -- 2nd
    rating IS NOT NULL AND release_date IS NOT NULL
GROUP BY release_date -- 3th
HAVING avg_rating > 6 -- 4rd
ORDER BY avg_rating DESC; -- 6th

#4.14 Super Practice Part 1

-- Q1. What is the average rating of each director??
SELECT director, AVG(rating) AS avg_rating
FROM movies
WHERE director IS NOT NULL AND rating IS NOT NULL
GROUP BY director
ORDER BY avg_rating DESC;

-- * that has more than 5 movies
SELECT director, AVG(rating) AS avg_rating
FROM movies
WHERE director IS NOT NULL AND rating IS NOT NULL 
GROUP BY director
HAVING COUNT(*) > 5
ORDER BY avg_rating DESC;


-- Q2. How many movies are in each genre?
SELECT genres, COUNT(genres) AS cnt_genres
FROM movies
WHERE genres IS NOT NULL
GROUP BY genres
ORDER BY cnt_genres DESC;

-- Q3. How many movies have a rating greater than 6? what is the most common?
SELECT rating
FROM movies
WHERE rating > 6
GROUP BY rating
ORDER BY count(*) DESC;

#4.15 Super Practice Part 2

-- Q1. Find the number of movies released each year.
SELECT release_date, COUNT(*)
FROM movies
WHERE release_date IS NOT NULL
GROUP BY release_date
ORDER BY release_date;

-- Q2. List the top 10 years with the highest average movie runtime.
SELECT release_date, AVG(runtime) AS avg_runtime
FROM movies
GROUP BY release_date
ORDER BY avg_runtime DESC
LIMIT 10;

-- Q3. Calculate the average rating for movies released in the 21st century.
SELECT AVG(rating)
FROM movies
WHERE release_date > 2000;

-- Q4. Find the director with the highest average movie runtime.
SELECT director
FROM movies
WHERE director IS NOT NULL AND RUNTIME IS NOT NULL
GROUP BY director
ORDER BY avg(runtime) DESC
LIMIT 1;

-- Q5. List the top 5 most prolific directors.
-- (those who have directed the most movies)
SELECT director
FROM movies
WHERE director IS NOT NULL
GROUP BY director
ORDER BY COUNT(*) DESC
LIMIT 5;

-- Q6. Find the highest and lowest rating of each director.
SELECT director, MAX(rating) AS high_rating, MIN(rating) AS low_rating
FROM movies
WHERE director IS NOT NULL AND rating IS NOT NULL
GROUP BY director;

-- Q7. Find the director that has made the most money (revenue - budget)
SELECT director, SUM(revenue)-SUM(budget) AS earn
FROM movies
WHERE director IS NOT NULL AND revenue IS NOT NULL AND budget IS NOT NULL
GROUP BY director
ORDER BY earn DESC;

-- Q8. Calculate the average rating for movies longer than 2 hours.
SELECT AVG(rating)
FROM movies
WHERE runtime >= 120 AND rating IS NOT NULL

-- Q9. Find the year with the most movies released.
SELECT release_date
FROM movies
WHERE release_date IS NOT NULL
GROUP BY release_date
ORDER BY COUNT(*) DESC
LIMIT 1;

-- Q10. Find the average runtime of movies for each decade.
SELECT (release_date/10)*10 AS decade, avg(runtime)
FROM movies
WHERE release_date IS NOT NULL AND runtime IS NOT NULL
GROUP BY decade
ORDER BY COUNT(*) DESC;

-- Q11. List the top 5 years
-- where the difference between the highest and lowest rated movie
-- was the greatest.
SELECT release_date, MAX(rating) - MIN(rating) AS difference
FROM movies
WHERE release_date IS NOT NULL AND RATING IS NOT NULL
GROUP BY release_date
ORDER BY difference DESC
LIMIT 5;


-- Q12. List directors who have never made a movie shorter than 2 hours.
SELECT director
FROM movies
GROUP BY director
HAVING MIN(runtime) >= 120;


#4.16 Super Practice Part 3

-- Q13. Calculate the percentage of movies with a rating above 8.0.
SELECT
	COUNT(CASE WHEN rating > 8 THEN 1 END) * 100 / COUNT(*) AS percentage
FROM movies;

-- Q14. Find the director with the highest ratio of movies rated above 7.0.
SELECT director,
	COUNT(CASE WHEN rating > 7 THEN 1 END) * 100 / COUNT(*) AS ratio
FROM movies
WHERE director IS NOT NULL
GROUP BY director
HAVING COUNT(*) >= 5
ORDER BY ratio DESC;

-- Q15. Categorize and group movies by length.

SELECT 
	CASE WHEN runtime < 90 THEN 'Short' 
	WHEN runtime BETWEEN 90 AND 120 THEN 'Normal'
  WHEN runtime > 120 THEN 'LONG'
  END AS runtime_category,
  COUNT(*) AS cnt_movies
FROM movies
WHERE runtime IS NOT NULL
GROUP BY runtime_category
ORDER BY cnt_movies DESC;


-- Q16. Categorize and group movies by flop or not
-- flop is more cost then income
SELECT
  CASE WHEN revenue < budget THEN 'flop' ELSE 'Sucess'
  END AS flop_category,
  count(*) as cnt_movies
FROM movies
WHERE budget IS NOT NULL AND revenue IS NOT NULL
GROUP BY flop_category;

#4.17 Views

-- View ์ €์žฅ
CREATE VIEW v_something AS SELECT ~~~~;

-- View ์‚ญ์ œ
DROP VIEW v_something

Previous#3 Data Definition LanguageNext#5 Subqueries and CTEs

Last updated 7 months ago

Was this helpful?

ใ„ด SQLite ์ง‘๊ณ„ํ•จ์ˆ˜ ํ™•์ธ

View

๐Ÿ“บ
https://www.sqlite.org/lang_aggfunc.html
https://www.tutorialspoint.com/sqlite/sqlite_views.htm