본문 바로가기

Web/자바스크립트

칸아카데미>>SQL>>CASE


<< 칸아카데미의 CASE를 학습한 내용입니다. 칸선생님 감사합니다. by 해인>>



Calculating results with CASE


CREATE TABLE exercise_logs

    (id INTEGER PRIMARY KEY AUTOINCREMENT,

    type TEXT,

    minutes INTEGER, 

    calories INTEGER,

    heart_rate INTEGER);


INSERT INTO exercise_logs(type, minutes, calories, heart_rate) VALUES ("biking", 30, 100, 110);

INSERT INTO exercise_logs(type, minutes, calories, heart_rate) VALUES ("biking", 10, 30, 105);

INSERT INTO exercise_logs(type, minutes, calories, heart_rate) VALUES ("dancing", 15, 200, 120);

INSERT INTO exercise_logs(type, minutes, calories, heart_rate) VALUES ("dancing", 15, 165, 120);

INSERT INTO exercise_logs(type, minutes, calories, heart_rate) VALUES ("tree climbing", 30, 70, 90);

INSERT INTO exercise_logs(type, minutes, calories, heart_rate) VALUES ("tree climbing", 25, 72, 80);

INSERT INTO exercise_logs(type, minutes, calories, heart_rate) VALUES ("rowing", 30, 70, 90);

INSERT INTO exercise_logs(type, minutes, calories, heart_rate) VALUES ("hiking", 60, 80, 85);


SELECT * FROM exercise_logs;


SELECT COUNT(*) FROM exercise_logs WHERE heart_rate > 220 - 30;


/* 50-90% of max*/

SELECT COUNT(*) FROM exercise_logs WHERE

    heart_rate >= ROUND(0.50 * (220-30)) 

    AND  heart_rate <= ROUND(0.90 * (220-30));

    

/* CASE */

SELECT type, heart_rate,

    CASE 

        WHEN heart_rate > 220-30 THEN "above max"

        WHEN heart_rate > ROUND(0.90 * (220-30)) THEN "above target"

        WHEN heart_rate > ROUND(0.50 * (220-30)) THEN "within target"

        ELSE "below target"

    END as "hr_zone"

FROM exercise_logs;


SELECT COUNT(*),

    CASE 

        WHEN heart_rate > 220-30 THEN "above max"

        WHEN heart_rate > ROUND(0.90 * (220-30)) THEN "above target"

        WHEN heart_rate > ROUND(0.50 * (220-30)) THEN "within target"

        ELSE "below target"

    END as "hr_zone"

FROM exercise_logs

GROUP BY hr_zone;




<실행>

DATABASE SCHEMA

exercise_logs8 rows
id (PK)INTEGER
typeTEXT
minutesINTEGER
caloriesINTEGER
heart_rateINTEGER

RESULTS

idtypeminutescaloriesheart_rate
1biking30100110
2biking1030105
3dancing15200120
4dancing15165120
5tree climbing307090
6tree climbing257280
7rowing307090
8hiking608085


COUNT(*)
0



COUNT(*)
4





typeheart_ratehr_zone
biking110within target
biking105within target
dancing120within target
dancing120within target
tree climbing90below target
tree climbing80below target
rowing90below target
hiking85below target




COUNT(*)hr_zone
4below target
4within target


'Web > 자바스크립트' 카테고리의 다른 글

카카오책 검색기능 구현(API 개념활용)  (0) 2020.01.01
칸아카데미>>SQL>>gradebook  (0) 2018.03.28
sql  (0) 2018.03.28
자바스크립트_객체지향_object  (0) 2018.03.28
자바스크립트_this  (0) 2018.03.28