我有以下查询
SELECT count
FROM (
SELECT count(id) as count FROM listens
WHERE user='None'
UNION
SELECT count(id) as count FROM listens
WHERE user!='None'
) as details
返回
count
36793
112755
我想对两个值(例如36793 / 112755
)执行除法,以便查询的输出为
count
0.3263092546
答案 0 :(得分:1)
你根本不需要union
!这是编写查询的一种更简单的方法:
SELECT sum(user = 'None') / sum(user <> 'None')
FROM listens;
MySQL将布尔表达式视为数字上下文中的数字,0表示false,1表示true。以上计算符合条件的值的数量。
如果您想要详细或与SQL的其他方言兼容,您可以这样做:
SELECT (sum(case when user = 'None' then 1 else 0 end) /
sum(case when user <> 'None' then 1 end)
) as ratio
FROM listens;
如果您使用MySQL,我没有看到详细程度的特殊优势,但逻辑是等效的。