Aplicarea logicii condiționale în Snowflake

Manipularea datelor în Snowflake

Jake Roach

Field Data Engineer

Agregarea cu instrucțiuni CASE

Interogările cu o instrucțiune CASE pot folosi în continuare funcții de agregare.

  • SUM()
  • AVG()
  • MIN()
  • MAX()
  • ...
  • MODE()

$$

Nu uitați să includeți un GROUP BY!

Structura unei instrucțiuni CASE cu agregare și grupare

Manipularea datelor în Snowflake

Agregarea cu instrucțiuni CASE

SELECT
    CASE
        WHEN month_num IN (12, 1, 2) THEN 'Winter'
        WHEN month_num IN (3, 4, 5) THEN 'Spring'
        WHEN month_num in (6, 7, 8) THEN 'Summer'
        ELSE 'Fall'
    END AS season,

AVG(temperature) AS average_temperature, -- Manipulate data with AVG()
year_num FROM weather GROUP BY season, year_num; -- Remember to group by non-aggregated fields
Manipularea datelor în Snowflake

Agregarea cu instrucțiuni CASE

Rezultatele unei interogări care calculează temperatura medie pentru fiecare sezon și an

Manipularea datelor în Snowflake

Agregarea câmpurilor CASE

SELECT
    season,
    AVG(
        CASE
            WHEN season = 'Winter' THEN temperature - 30
            WHEN season IN ('Spring', 'Fall') THEN temperature - 60
            WHEN season = 'Summer' THEN temperature - 75
        END
    ) AS relation_to_average_temperature
FROM weather
GROUP BY season;
Manipularea datelor în Snowflake

Agregarea câmpurilor CASE

Tabel care afișează relația dintre temperatura medie și sezon

Manipularea datelor în Snowflake

JOIN-uri

SELECT
    ...

    -- Define a CASE statement
    CASE ...

FROM <left_table>

-- JOIN new records to existing table
LEFT JOIN <right_table> 
    ... 
;

Instrucțiunile CASE pot fi construite folosind date unite din două tabele diferite.

  • Folosiți coloane din mai multe tabele într-o instrucțiune CASE
  • LEFT, RIGHT, INNER, OUTER etc.
  • Combinați cu alte instrumente, inclusiv funcții de agregare

$$

$$

                                          Să vedem cum funcționează!

Manipularea datelor în Snowflake

Determinarea eligibilității la credite universitare

SELECT
    students.student_name,
    student_courses.course_name,

-- Evaluate both the student's grade number and grade for the course CASE WHEN students.grade_num = 12 AND student_courses.grade > 90 THEN 'College Credit Eligible' ELSE 'Too Early for College Credit' END AS college_credit_status
FROM student_courses LEFT JOIN students ON student_courses.student_id = students.student_id;
Manipularea datelor în Snowflake

Determinarea eligibilității la credite universitare

Rezultatele unei interogări asupra tabelelor JOINED students și student_courses

Manipularea datelor în Snowflake

Să exersăm!

Manipularea datelor în Snowflake

Preparing Video For Download...