Giter Site home page Giter Site logo

mysql-oneforall's Introduction

One For All

Projeto realizado durante o curso de Desenvolvimento Web da Trybe utilizando

🎯 Desafio do projeto:

Através de uma tabela não normalizada semelhante ao que poderia ser uma versão simplificada do banco de dados do Spotify.

  • Normalize a tabela SpotifyClone na terceira forma normal, crie o schema no seu banco de dados local e acesse as informações desta tabela através de queries utilizando SQL.
  • Realize os desafios no seu banco normalizado e populado.

🗓 Data de entrega para avaliação final do projeto: 01/08/2022 14:00.

Diagrama da Tabela Normalizada:

Diagrama

Utilizando Google Sheets e DrawSQL

📝 Checklist

  • Crie um banco com o nome de SpotifyClone.

    • Providencie as queries necessárias para criar tabelas normalizadas que atendam aos requisitos descritos na seção anterior;
    • Providencie as queries necessárias para popular as tabelas conforme os dados listados na seção anterior;
    • Crie um arquivo de configurações desafio1.json, que mapeará em qual tabela e coluna se encontram as informações necessárias para a avaliação.
  • Crie uma QUERY que exiba três colunas:

    • A primeira coluna deve exibir a quantidade total de canções. Dê a essa coluna o alias "cancoes".
    • A segunda coluna deve exibir a quantidade total de artistas e deverá ter o alias "artistas".
    • A terceira coluna deve exibir a quantidade de álbuns e deverá ter o alias "albuns".
  • Crie uma QUERY que deverá ter apenas três colunas:

    • A primeira coluna deve possuir o alias "usuario" e exibir o nome da pessoa usuária.
    • A segunda coluna deve possuir o alias "qtde_musicas_ouvidas" e exibir a quantidade de músicas ouvida pela pessoa com base no seu histórico de reprodução.
    • A terceira coluna deve possuir o alias "total_minutos" e exibir a soma dos minutos ouvidos pela pessoa usuária com base no seu histórico de reprodução.
    • Os resultados devem estar agrupados pelo nome da pessoa usuária e ordenados em ordem alfabética.
  • Crie uma QUERY que deve mostrar as pessoas usuárias que estavam ativas no ano de 2021 se baseando na data mais recente no histórico de reprodução.

    • A primeira coluna deve possuir o alias "usuario" e exibir o nome da pessoa usuária.
    • A segunda coluna deve ter o alias "condicao_usuario" e exibir se a pessoa usuária está ativa ou inativa.
    • O resultado deve estar ordenado em ordem alfabética.
  • Crie uma QUERY que possua duas colunas:

    • A primeira coluna deve possuir o alias "cancao" e exibir o nome da canção.
    • A segunda coluna deve possuir o alias "reproducoes" e exibir a quantidade de pessoas que já escutaram a canção em questão.
    • Seu resultado deve estar ordenado em ordem decrescente, baseando-se no número de reproduções. Em caso de empate, ordene os resultados pelo nome da canção em ordem alfabética. Queremos apenas o top 2 de músicas mais tocadas.
  • Crie uma QUERY que deve exibir quatro dados:

    • A primeira coluna deve ter o alias "faturamento_minimo" e exibir o menor valor de plano existente para uma pessoa usuária.
    • A segunda coluna deve ter o alias "faturamento_maximo" e exibir o maior valor de plano existente para uma pessoa usuária.
    • A terceira coluna deve ter o alias "faturamento_medio" e exibir o valor médio dos planos possuídos por pessoas usuárias até o momento.
    • Por fim, a quarta coluna deve ter o alias "faturamento_total" e exibir o valor total obtido com os planos possuídos por pessoas usuárias.
    • Para cada um desses dados, por se tratarem de valores monetários, deve-se arredondar o faturamento usando apenas duas casas decimais.
  • Crie uma QUERY com as seguintes colunas:

    • A primeira coluna deve exibir o nome da pessoa artista, com o alias "artista".
    • A segunda coluna deve exibir o nome do álbum, com o alias "album".
    • A terceira coluna deve exibir a quantidade de pessoas seguidoras que aquela pessoa artista possui e deve possuir o alias "seguidores".
    • Seus resultados devem estar ordenados de forma decrescente, baseando-se no número de pessoas seguidoras. Em caso de empate no número de pessoas, ordene os resultados pelo nome da pessoa artista em ordem alfabética e caso há artistas com o mesmo nome, ordene os resultados pelo nome do álbum alfabeticamente.
  • Crie uma QUERY que o retorno deve exibir as seguintes colunas:

    • O nome da pessoa artista, com o alias "artista".
    • O nome do álbum, com o alias "album".
    • Os resultados devem ser ordenados pelo nome do álbum em ordem alfabética.
  • Crie uma QUERY que exibe a quantidade de músicas que estão presentes atualmente no histórico de reprodução de uma pessoa usuária específica.

    • Quantas músicas estão no histórico do usuário "Bill" e a consulta deve retornar a seguinte coluna:

      • O valor da quantidade, com o alias "quantidade_musicas_no_historico".
  • Crie uma QUERY que exiba o nome e a quantidade de vezes que cada canção foi tocada por pessoas usuárias do plano gratuito ou pessoal conforme os detalhes a seguir:

    • A primeira coluna deve exibir o nome da canção, com o alias "nome";
    • A segunda coluna deve exibir a quantidade de pessoas que já escutaram aquela canção, com o alias "reproducoes";
    • Seus resultados devem estar agrupados pelo nome da canção e ordenados em ordem alfabética.

BÔNUS

  • Crie uma QUERY que altere o nome de algumas músicas e as ordene em ordem alfabética com as colunas abaixo se baseando nos seguintes critérios:

    • O nome da música em seu estado normal com o alias nome_musica
    • O nome da música atualizado com o alias novo_nome

Critérios

  • Trocar a palavra "Streets" no final do nome de uma música por "Code Review"
  • Trocar a palavra "Her Own" no final do nome de uma música por "Trybe"
  • Trocar a palavra "Inner Fire" no final do nome de uma música por "Project"
  • Trocar a palavra "Silly" no final do nome de uma música por "Nice"
  • Trocar a palavra "Circus" no final do nome de uma música por "Pull Request"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.