我有两张桌子,一张桌子包含我发给某些人的所有电子邮件,另一张桌子包含我发给他们电子邮件后在我网站上注册的所有人。
我需要实现的是计算注册用户的百分比,所以现在我有这个:
SELECT COUNT(*) from email_sent //10
SELECT COUNT(*) from registred_users //2
对于这个例子,我需要构建一个返回20%的查询,因为10个中的2个意味着20%。
答案 0 :(得分:2)
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将值转换为数字。正如我的评论所述,实际上只需要1次转换:
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