在 SQL 中添加 COUNT 语句



我正在尝试在SQL中添加有条件的计数语句,但不断收到错误。下面是我的代码:

  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 的计数,但不断出现错误。

我会把它写成:

 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()很好(。 你的问题是分母中缺少一个参数。

尝试这样的事情。

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)

最新更新