我有以下查询
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
最佳答案
您根本不需要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,那么详细程度没有特别的优势,但是逻辑是等效的。
关于mysql - 从UNION查询对两行执行计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49684102/