Skip to content

In this project,12 tables used to answer many questions about datas from easy level to advance level.Join,temporary tables,CTE and window functions are used.

Notifications You must be signed in to change notification settings

cagandemirmr/Music_SQL

Repository files navigation

DATASET INFORMATION

The dataset consists of 12 CSV files, each representing different aspects of a music store database. These files are used for data exploration and querying. Below is the list of CSV files used:

  • album.csv
  • album2.csv
  • customer.csv
  • employee.csv
  • genre.csv
  • invoice.csv
  • invoice_line.csv
  • media_type.csv
  • playlist.csv
  • playlist_track.csv
  • track.csv
  • artist.csv

DATA EXPLORATION QUERIES

  • Senior Manager Query:
    Who is the senior manager based on their job title?

    select * from employee where title  like '%Senior%'

    image

  • Countries with Most Invoices:
    Which countries have the highest number of invoices?

    select top 5 billing_country,COUNT(invoice_id) invoice_amount 
    from invoice group by billing_country order by 2 desc

    image

  • Top 3 Invoices by Total Value:
    What are the top 3 invoices with the highest total value?

    select  top 3 * from invoice 
    order by total desc

    image

  • City with Most Revenue:
    Which city generates the most revenue based on invoices?

    select  top 1 billing_city total_revenue from invoice
    group by billing_city order by sum(total) desc

    image

  • Customer Who Spends the Most Money:
    Which customer has spent the most money?

    select  top 1 c.first_name +' '+ c.last_name NAMEOFCUSTOMER   from (select   customer_id,billing_city,total total_revenue from invoice) A 
    join customer c on A.customer_id=c.customer_id
    group by c.first_name,c.last_name order by sum(A.total_revenue) desc

    image

  • Rock Music Listeners:
    List the email, first name, last name, and genre of all Rock music listeners, ordered alphabetically by email starting with 'A'.

    select  c.first_name,c.last_name,g.name from customer c
    join invoice i on i.customer_id=c.customer_id
    join invoice_line il on il.invoice_id=i.invoice_id
    join track t on il.track_id = t.track_id
    join genre g on g.genre_id=t.genre_id
    where g.name like 'Rock'
    group by c.first_name,c.last_name,g.name,c.email
    order by c.email

    image

  • Top Rock Bands:
    Identify the top 10 rock bands based on the total track count.

    select top 10 ar.name from artist ar
    join album a on a.artist_id=ar.artist_id
    join track tr on tr.album_id=a.album_id
    join genre g on g.genre_id=tr.genre_id
    where g.name like '%Rock'
    group by  ar.name
    order by COUNT(tr.album_id) desc

    image

  • Tracks Longer Than Average:
    Return all track names that have a song length longer than the average song length, ordered by length.

    select tr.name,tr.milliseconds from artist ar
    join album a on a.artist_id=ar.artist_id
    join track tr on tr.album_id=a.album_id
    join genre g on g.genre_id=tr.genre_id
    where LEN(tr.name)>(select SUM(LEN(trim(name)))/COUNT(name) AVG_length from track)
    group by tr.name,tr.milliseconds
    order by len(tr.name) desc

    image

  • Customer Spending on Artists:
    Find out how much each customer has spent on artists. Return customer name, artist name, and total spent.

    select c.first_name CUSTOMER_NAME,c.last_name CUSTOMER_SURNAME,ar.name ARTIST_NAME,sum(i.total) TOTALSPEND from customer c
    join invoice i on c.customer_id=i.customer_id
    join invoice_line il on il.invoice_id=i.invoice_id
    join track t on il.track_id=t.track_id
    join album a on a.album_id=t.album_id
    join artist ar on ar.artist_id = a.artist_id
    group by c.first_name,c.last_name,ar.name
    order by 3 des

    image

  • Most Popular Genre by Country:
    Determine the most popular music genre for each country based on total revenue from purchases.

    drop table if exists #temptable --In case i want to use table later
    create table #temptable(country varchar(100),genre_name varchar(100),total_revenue float) -- I do not want to write same querry thats why i created temp table
    
    insert into #temptable select c.country,g.name,SUM(i.total) total_revenue from customer c
    join invoice i on c.customer_id=i.customer_id
    join invoice_line il on il.invoice_id=i.invoice_id
    join track t on il.track_id=t.track_id
    join genre g on g.genre_id=t.genre_id
    join album a on a.album_id=t.album_id
    join artist ar on ar.artist_id = a.artist_id
    group by c.country,g.name   
    
    
    WITH Ranked_Genres as (select country,genre_name,total_revenue,
    row_number() over(partition by country order by total_revenue desc) as rank_ 
    from #temptable)
    select country,genre_name from Ranked_Genres where rank_=1

    image

  • Top Customer per Country:
    Identify the top customer who has spent the most on music in each country, including their spending amount.

    drop table if exists #temptable2 
    create table #temptable2(country varchar(100),Customer_name varchar(100),Customer_Surname varchar(100),Revenue float)
    
    
    insert into #temptable2
    select c.country,c.first_name,c.last_name,SUM(i.total) total_revenue from customer c
    join invoice i on c.customer_id=i.customer_id
    join invoice_line il on il.invoice_id=i.invoice_id
    join track t on il.track_id=t.track_id
    join genre g on g.genre_id=t.genre_id
    join album a on a.album_id=t.album_id
    join artist ar on ar.artist_id = a.artist_id
    group by c.country,c.first_name,c.last_name,g.name
    
    
    
    WITH RANKED_CUSTOMER as (
    select country,Customer_name,Customer_Surname,Revenue,ROW_NUMBER() over(partition by country order by Revenue desc)
    as rank_ from #temptable2) select country,Customer_name,Customer_Surname,Revenue from Ranked_Customer where rank_=1

    image

About

In this project,12 tables used to answer many questions about datas from easy level to advance level.Join,temporary tables,CTE and window functions are used.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published