我有一个包含3列的表(Table1):

姓名| RegDate |活性

我想知道RegDate列中两个日期之间处于活动状态(Active = 1)的行的百分比。

例如:
在“ 2013-01-01”和“ 2013-03-31”之间(RegDate字段),我想知道什么是有效百分比(Active = 1)?

是否可以在单个MySQL表达式中执行此操作?

目前,我有这个:


  $ sql =“ SELECT * FROM Table1 t T.RegDate ='2013-01-01'”
  
  $ sql_executa = $ conn-> prepare($ sql)或die($ sql);
  
  $ sql_executa-> execute();
  
  $ total = $ sql_executa-> rowCount();
  
  $ sql_2 =“ SELECT * FROM Table1 t t.RegDate ='2013-01-01'AND Active = 1”;
  
  $ sql_executa_2 = $ conn-> prepare($ sql_2)或死亡($ sql_2);
  
  $ sql_executa_2-> execute();
  
  $ total_2 = $ sql_executa_2-> rowCount();
  
  $ Percentagem =($ total_2 * 100)/ $ total; //这是我需要的答案!


提前致谢

最佳答案

尝试:

SELECT sum( case when Active=1 then 1 else 0 end )
       /
       count(*)
       * 100
       As Percent_of_Active_records
FROM Table1 t
WHERE t.RegDate <= '2013-03-31'
  AND t.RegDate >= '2013-01-01'

10-05 19:01