匹配条件的行的百分比

时间:2014-07-10 17:25:38

标签: mysql database

我正在寻找一种方法来获得与特定条件匹配的行的百分比而不使用子查询。目前,我有:

SELECT 
((SELECT COUNT(*)
FROM `table1`
WHERE `date` >= @monthbegin AND `date` <= @monthend AND `isMember` = TRUE) / 
(SELECT COUNT(*) 
FROM `table`
WHERE `date` >= @monthbegin AND `date` <= @monthend) * 100) AS percent_new

基本上,每月有N个新行,我希望获得与isMember = TRUE条件相匹配的新行的百分比。是否有更短或更清洁的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

假设table1table实际上是相同的......你可以试试

SELECT 100*SUM(CASE WHEN `isMember` THEN 1 ELSE 0 END)/COUNT(*) percent_new
FROM `table1`
WHERE `date` BETWEEN @monthbegin AND @monthend

绝对不知道这是否比你的查询更快,但确实删除了子查询。

您也可以尝试:

SELECT 100*COUNT(CASE WHEN `isMember` THEN 1 ELSE NULL END)/count(*) percent_new
FROM `table1`
WHERE `date` BETWEEN @monthbegin AND @monthend

实际上,使用MySQL处理BOOLEAN列的方式可以逃脱:

SELECT 100*SUM(`isMember`)/COUNT(*) percent_new
FROM `table1`
WHERE `date` BETWEEN @monthbegin AND @monthend