SQL真实列的百分比

Duk*_*ver 3 sql sqlite

我有一个表,其中每一行都有一个描述字段以及一个布尔值.我正在尝试编写一个查询,我可以按每个相应的描述进行分组,并查看布尔值为真的次数百分比.

示例表:

    PID    Gender    SeniorCitizen
     1       M             1
     2       M             1
     3       F             0
     4       F             1
     5       M             0
Run Code Online (Sandbox Code Playgroud)

我想要一个将返回此信息的查询:

    Gender    SeniorPct
      M         .66
      F         .50
Run Code Online (Sandbox Code Playgroud)

我已经到了能够计算男性或女性个人百分比的查询,但我希望一次看到两个结果

    SELECT Gender, COUNT(*) * 1.0 / 
                   (SELECT COUNT(*) FROM MyTable WHERE Gender='M') 
    FROM MyTable WHERE Gender='M' and SeniorCitizen=1;
Run Code Online (Sandbox Code Playgroud)

我一直在尝试在上面的外部SELECT中包含一个"GROUP BY Gender"语句,但我似乎无法弄清楚如何在调整外部SELECT之后调整内部SELECT以获得正确的结果.

Bra*_*vic 5

(我在MySQL下对此进行了测试,请检查是否可以将相同的想法应用于SQLite.)

为了找到老年人的数量(每性别),我们可以将这些位视为数字并简单地总结:

SELECT
    Gender,
    SUM(SeniorCitizen) Seniors
FROM MyTable
GROUP BY Gender

GENDER  SENIORS
M       2
F       1
Run Code Online (Sandbox Code Playgroud)

基于此,我们可以轻松计算百分比:

SELECT
    Gender,
    SUM(SeniorCitizen) / COUNT(*) * 100 SeniorsPct
FROM MyTable
GROUP BY Gender

GENDER  SENIORSPCT
M       66.6667
F       50
Run Code Online (Sandbox Code Playgroud)

你可以在这个SQL小提琴中玩它.


更新:非常相似的想法也适用于SQLite.请看一下另一个SQL小提琴.