Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

MINHA RESOLUÇÃO

CREATE NONCLUSTERED INDEX IX_NOTAS_FISCAIS_DATA
ON [NOTAS FISCAIS] ([DATA]);

CREATE OR ALTER PROCEDURE dbo.RetornaDepartamentoFaturamento
    @DATA_INICIAL DATE = NULL,
    @DATA_FINAL   DATE = NULL
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @FATURAMENTO_SETOR TABLE (DEPARTAMENTO VARCHAR(20), FATURAMENTO FLOAT);

    IF @DATA_INICIAL IS NULL
    BEGIN
        SELECT @DATA_INICIAL = MIN([DATA])
        FROM [NOTAS FISCAIS];
    END;

    IF @DATA_FINAL IS NULL
    BEGIN
        SELECT @DATA_FINAL = MAX([DATA])
        FROM [NOTAS FISCAIS];
    END;

    INSERT INTO @FATURAMENTO_SETOR(DEPARTAMENTO, FATURAMENTO)
    SELECT
        DEP.DEPARTAMENTO,
        SUM(INF.[PREÇO] * INF.QUANTIDADE) AS FATURAMENTO
    FROM [TABELA DE PRODUTOS] TB
    JOIN [ITENS NOTAS FISCAIS] INF
        ON TB.[CODIGO DO PRODUTO] = INF.[CODIGO DO PRODUTO]
    JOIN [NOTAS FISCAIS] NF
        ON INF.NUMERO = NF.NUMERO
    JOIN (
        SELECT DISTINCT
            SABOR,
            CASE
                WHEN SABOR IN (
                    'Açai','Cereja','Cereja/Maça',
                    'Maça','Manga','Maracujá','Melância'
                ) THEN 'FRUTAS NÃO CÍTRICAS'
                WHEN SABOR IN (
                    'Laranja','Lima/Limão','Morango',
                    'Morango/Limão','Uva'
                ) THEN 'FRUTAS CÍTRICAS'
                ELSE 'SETOR NÃO DEFINIDO'
            END AS DEPARTAMENTO
        FROM [TABELA DE PRODUTOS]
    ) DEP
        ON DEP.SABOR = TB.SABOR
    WHERE NF.DATA >= @DATA_INICIAL
      AND NF.DATA < DATEADD(DAY, 1, @DATA_FINAL)
    GROUP BY DEP.DEPARTAMENTO;
SELECT * FROM @FATURAMENTO_SETOR
END;


EXEC RetornaDepartamentoFaturamento '2015-08-01', '2015-08-31'
1 resposta
solução!

Olá, Robson! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de índices para otimizar consultas, utilizou muito bem a criação de procedures para estruturar a lógica de negócio e ainda compreendeu a importância de tratar valores nulos com condições para tornar o código mais robusto.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!