mysql - SQL: How do you showcase the percentage of total in a column? -


i have create movie database, , 1 of queries involves showing list of movies user has "rated," along actual rating , genre.

additionally, must show percentage of genre out of movies user has rated. example:

create table genres ( movieid                         int             not null, genre                           varchar(20), primary key(movieid), foreign key(movieid) references movies(id) ); 

query:

select u.userid, m.title, u.userrating, g.genre user_ratedmovies u, movies m, genres g (m.id = u.movieid) , (u.userid "example") , (g.movieid = m.id) order date_year, date_month, date_day, date_hour, date_minute, date_second; 

this returns need except percentage of total. that's lost. i'm new sql , struggle count(*) , group by.

the challenge of needs presenting unit level data aggregate level data. hence, consider using aggregate groupby derived tables (nested select statements in from or join clauses) correlates (matches userid) set query (using explicit instead of implicit joins):

select u.userid, m.title, u.userrating, g.genre,         (gdt.genre_count / udt.rating_count) percentage  user_ratedmovies u  inner join movies m on m.id = u.movieid inner join genres g on m.id = g.movieid   inner join     -- counts corresponding user , genre     (select subu.userid, subg.genre, count(*) genre_count      user_ratedmovies subu      inner join movies subm on subm.id = subu.movieid     inner join genres subg on subm.id = subg.movieid      group subu.userid, subg.genre) gdt on gdt.userid = u.userid , gdt.genre = g.genre  inner join    -- counts corresponding user    (select subu.userid, count(*) rating_count      user_ratedmovies subu      group subu.userid) udt on udt.userid = u.userid   u.userid "example"  order date_year, date_month, date_day,           date_hour, date_minute, date_second; 

Comments