Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to calculate ratio using sql query?

I have a table like below:

ID   Name   Department Gender
1    Crib     MA        MALE
2    Lucy     Bsc       FEMALE
3    Phil     Bcom      MALE
4    Ane      MA        FEMALE

I have 1000 row of records like this. I want to find the ratio from column Gender( MALE & FEMALE) of all students.

I need a query to perform this.

like image 787
san_code Avatar asked Dec 02 '14 15:12

san_code


3 Answers

SQL Fiddle

MySQL 5.5.32 Schema Setup:

CREATE TABLE table1
    (`ID` int, `Name` varchar(4), `Department` varchar(4), `Gender` varchar(6))
;

INSERT INTO table1
    (`ID`, `Name`, `Department`, `Gender`)
VALUES
    (1, 'Crib', 'MA', 'MALE'),
    (2, 'Lucy', 'Bsc', 'FEMALE'),
    (3, 'Phil', 'Bcom', 'MALE'),
    (4, 'Ane', 'MA', 'FEMALE')
;

Query 1:

SELECT sum(case when `Gender` = 'MALE' then 1 else 0 end)/count(*) as male_ratio,
       sum(case when `Gender` = 'FEMALE' then 1 else 0 end)/count(*) as female_ratio
FROM table1

Results:

| MALE_RATIO | FEMALE_RATIO |
|------------|--------------|
|        0.5 |          0.5 |
like image 50
Fabien TheSolution Avatar answered Oct 17 '22 07:10

Fabien TheSolution


Try something like this

select sum(case when gender = 'MALE' then 1 else 0 end) / count(*) * 100 as perc_male,
sum(case when gender = 'FEMALE' then 1 else 0 end) / count(*) * 100 as perc_female
from students
like image 42
S. Wirth Avatar answered Oct 17 '22 08:10

S. Wirth


You're pretty close:

select (select count(*) 
          from table where gender='MALE' )/count(*)*100 as percentage_male,
       (select count(*) 
          from table where gender='FEMALE' )/count(*)*100 as percentage_female 
from table;
like image 1
Sebri Zouhaier Avatar answered Oct 17 '22 08:10

Sebri Zouhaier