Search code examples
mysqldatabaseselectsum

mysql group sum same table


I have the following table:

id name type score
1 john orange 2345
2 john yellow 5
3 john black 5454540
4 jack orange 1123
5 jack yellow 1000
6 jack black 86943
7 jane orange 9876
8 jane yellow 10000
9 jane black 102233

comment;

id : inte
name :   same name save more times to more rows, 
score: it is int data
type : it has string data black,white,yellow,purple,orange

I'm using the following queries to calculate two score totals

SELECT name,sum(score) as `first` 
FROM salary 
WHERE type = 'orange' 

SELECT name,sum(score) as `second` 
FROM salary 
WHERE type in ('black','yellow') 

i want see result that ( all names must be group, single name.)

name FirstScore SecondScore
john 2345 5454545
jack 1123 87943
jane 9876 112233

Solution

  • Use a conditional SUM() to aggregate the values based on type:

     SELECT name
            , SUM(CASE WHEN type IN ('orange') THEN score END ) AS FirstScore
            , SUM(CASE WHEN type IN ('yellow','black') THEN score END ) AS SecondScore
     FROM   salary
     GROUP BY Name    
    

    Results:

    name FirstScore SecondScore
    john 2345 5454545
    jack 1123 87943
    jane 9876 112233

    db<>fiddle here