如何使用sql查询计算比率?

问题描述 投票:0回答:5

我有一张如下表:

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

我有 1000 行这样的记录。我想从所有学生的性别(男性和女性)列中找到比例。

我需要一个查询来执行此操作。

mysql sql-server oracle
5个回答
17
投票

SQL 小提琴

MySQL 5.5.32 架构设置:

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')
;

查询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

结果:

| MALE_RATIO | FEMALE_RATIO |
|------------|--------------|
|        0.5 |          0.5 |

7
投票

尝试这样的事情

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

1
投票

这应该给你实际的比率,并且应该在 MySQL 和 SQL Server 中很少或没有修改的情况下工作。您可能需要稍微修改一下强制转换语句 - 我的 MySQL 生锈了,我认为它的处理方式可能略有不同。

SELECT 
    (CAST((SELECT COUNT(*) FROM tblName WHERE Gender='MALE') AS FLOAT) / 
     CAST((SELECT COUNT(*) FROM tblName WHERE Gender='FEMALE') AS FLOAT)) 
    AS ratioMaleFemale;

1
投票

你已经很接近了:

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;

0
投票

创建表Employee( EmpID int NOT NULL, EmpName Varchar (50), 性别查尔 (50), 工资整数, 城市魅力(50) ) 插入员工值 (1, 'Arjun', 'M', 75000, 'Pune'), (2, 'Ekadanta', 'M', 125000, '班加罗尔'), (3, '拉丽塔', 'F', 150000, '马图拉'), (4, '马达夫', 'M', 250000, '德里'), (5, '维萨卡', 'F', 120000, '马图拉')

从员工中选择*

选择 COUNT(性别)作为 [Total Emp], (从员工中选择 COUNT(性别) 其中性别 = 'M') 100/计数 () 作为[男性比例], (从员工中选择 COUNT(性别) 其中性别 = 'F') 100/计数 () 作为 [女性比例] 来自员工

邮件 ID - [电子邮件受保护]

© www.soinside.com 2019 - 2024. All rights reserved.