我有两个表,一个表包含我发送给一些人的所有电子邮件,另一个表则包含我向他们发送这些电子邮件后在我的网站上注册的所有人。
我需要实现的是计算注册用户的百分比,所以现在我有了这个:
SELECT COUNT(*) from email_sent //10
SELECT COUNT(*) from registred_users //2
对于这个例子,我需要构建一个查询开关,它将返回20%,因为10中的2表示20%。
SELECT
mailsSent
, userAmount
, CONVERT(decimal(14,2), mailsSent) / CONVERT(decimal(14,2), userAmount) AS Percentage
FROM
(SELECT COUNT(*) AS mailsSent from email_sent) a
, (SELECT COUNT(*) AS userAmount from registred_users) b
基本上,这两个子查询将以2个别名列的形式获得原始值,然后可以将其从主查询中分割出来。
编辑:
显式转换的另一种选择是乘以1.0将值转换为数字。正如我在评论中所说,实际上只需要一个转换:
SELECT
mailsSent
, userAmount
, mailsSent * 1.0 / userAmount AS Percentage
FROM
(SELECT COUNT(*) AS mailsSent from email_sent) a
, (SELECT COUNT(*) AS userAmount from registred_users) b