Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何对多个选择结果执行数学运算?_Sql_Postgresql - Fatal编程技术网

Sql 如何对多个选择结果执行数学运算?

Sql 如何对多个选择结果执行数学运算?,sql,postgresql,Sql,Postgresql,我有一个PlayerTrial的sql表,可以容纳玩家的测试 ---PlayerTrials Basic Layout--- int id int playerid bool flagA bool flagB bool flagC 我想确定一个玩家在设置了B和C标志的情况下完成的试玩百分比 为此,我知道我必须: 1) 选择单个玩家的总试玩次数 SELECT COUNT( * ) from playertrial WHERE playerid = _ 2) 选择flagB和flagC为真的总试

我有一个PlayerTrial的sql表,可以容纳玩家的测试

---PlayerTrials Basic Layout---
int id
int playerid
bool flagA
bool flagB
bool flagC
我想确定一个玩家在设置了B和C标志的情况下完成的试玩百分比

为此,我知道我必须:

1) 选择单个玩家的总试玩次数

SELECT COUNT( * ) from playertrial WHERE playerid = _
2) 选择flagB和flagC为真的总试验

SELECT COUNT( * ) from playertrial WHERE playerid = _ AND flagB = true AND flagC = true
3) 将2除以1,确定设置标志B+C的试验百分比

brain explode.

我知道如何对1和2进行单独查询。当然,我可以把它们放在一张临时的桌子上。但我确信有一种方法可以将它们合并到一个查询中,我已经绞尽脑汁尝试了所有我知道的SQL组合,以至于我不知道下一步要尝试什么。有什么想法吗?

非常感谢,非常有魅力。看起来这是你的第二天性…荣誉。
SELECT BCCount, TotalCount, BCCount/TotalCount as Percentage
    FROM (SELECT SUM(CASE WHEN flagB=true AND flagC=true THEN 1 ELSE 0 END) AS BCCount,
                 COUNT(*) as TotalCount
              FROM playertrial
              WHERE playerid = _) t