Aplicando lógica condicional no Snowflake

Manipulação de dados no Snowflake

Jake Roach

Field Data Engineer

Agregação com CASE

Consultas com CASE ainda podem usar funções de agregação.

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

$$

Só não esqueça do GROUP BY!

Um esqueleto de uma instrução CASE que inclui agregação e agrupamento

Manipulação de dados no Snowflake

Agregação com 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, -- Manipule dados com AVG()
year_num FROM weather GROUP BY season, year_num; -- Lembre-se de agrupar campos não agregados
Manipulação de dados no Snowflake

Agregação com CASE

Resultados de uma consulta que encontra a temperatura média por estação e ano

Manipulação de dados no Snowflake

Agregando campos com 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;
Manipulação de dados no Snowflake

Agregando campos com CASE

Tabela exibindo a relação da temperatura média por estação

Manipulação de dados no Snowflake

JOINs

SELECT
    ...

    -- Defina uma instrução CASE
    CASE ...

FROM <left_table>

-- Faça JOIN de novos registros à tabela existente
LEFT JOIN <right_table> 
    ... 
;

Instruções CASE podem ser construídas usando dados unidos de duas tabelas diferentes.

  • Use colunas de mais de uma tabela em um CASE
  • LEFT, RIGHT, INNER, OUTER, etc.
  • Combine com outras ferramentas, incluindo funções de agregação

$$

$$

                                          Vamos conferir!

Manipulação de dados no Snowflake

Determinando elegibilidade a créditos universitários

SELECT
    students.student_name,
    student_courses.course_name,

-- Avalie tanto o número de série do aluno quanto a nota no curso 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;
Manipulação de dados no Snowflake

Determinando elegibilidade a créditos universitários

Os resultados de uma consulta sobre as tabelas students e student_courses com JOIN

Manipulação de dados no Snowflake

Vamos praticar!

Manipulação de dados no Snowflake

Preparing Video For Download...