在SQL中添加COUNT语句

时间:2017-06-21 18:02:28

标签: sql count

我正在尝试在SQL中添加有条件的count语句,并且我一直收到错误。以下是我的代码:

  SELECT 
  (100.0*(COUNT(CASE [TYPE] WHEN 500 THEN 1 ELSE NULL END)) / (100*
  (COUNT(CASE [TYPE] WHEN 400 THEN 1 ELSE NULL END + COUNT(CASE [TYPE] WHEN 
  300 THEN 1 ELSE NULL END))) AS Ratio
  FROM historytable

基本上我试图获取活动类型500的计数百分比除以活动类型400和300的计数,并且我一直收到错误。

2 个答案:

答案 0 :(得分:3)

我会把它写成:

 SELECT (sum(case when [type] = 500 then 100.0 else 0 end) /
         sum(case when [type] in (300, 400) then 1 end)
        ) as ratio
 FROM historytable;

我更喜欢sum()count()进行此类计算(个人偏好,count()很好)。你的问题是分母中缺少的问题。

答案 1 :(得分:0)

尝试这样的事情。

SELECT (
  100.0 *(
      SELECT count( * )
      FROM historytable
      WHERE [type]=500
  ) / ( 
    100 * (
      (
        SELECT count( * )
        FROM historytable
        WHERE [type]=400
      ) + (
        SELECT count( * )
        FROM historytable
        WHERE [type]=300
      )
    )
  )
) as ratio

使用mysql数据库,我能够在数据表上使用[type]和特定于该表的值来测试它。

SELECT (
  100.0 *(
      SELECT count(*) FROM my_table WHERE record_type='value_1'
  ) / ( 
      100 *(
          (
              SELECT count(*) FROM my_table WHERE record_type='value_2'
          ) + (
              SELECT count( * ) FROM my_table WHERE record_type='value_3'
          )
      )
  )
) as ratio;
+---------+
| ratio   |
+---------+
| 1.61804 |
+---------+
1 row in

 set (0.00 sec)