总结同一SQL表上的两个条件

时间:2009-11-24 00:12:13

标签: sql aggregation

给定一个SQL表

Transactions
  ID            INT
  COMPANY_ID    INT
  STATUS        INT

其中STATUS IN (0,1)表示空闲事务,STATUS IN (2,3)表示可计费事务,简单(我希望)ANSI SQL语句将根据COMPANY_ID向我显示可计费事务的数量,不可结算交易及其比率?

如果不是特定的陈述,正确方向的概念刺激是好的。我的第一次尝试是使用两个状态组的WHERE子句自行加入表中,但我仍然坚持如何获得一个代表每个不同计数的列,以便我可以计算比率。

这在概念上与summarize-aggregated-data非常相似,但我不确定如何将这个问题扩展到这个问题。

1 个答案:

答案 0 :(得分:5)

这是一个开始,我认为这是沿着正确的方向......唯一剩下的就是增加比率。

SELECT
    COMPANY_ID,
    NON_BILLABLE = SUM(CASE STATUS WHEN IN (0, 1) THEN 1 ELSE 0 END),
    BILLABLE = SUM(CASE STATUS WHEN IN (2, 3) THEN 1 ELSE 0 END)
FROM TRANSACTIONS
GROUP BY COMPANY_ID

编辑:符合标准。

SELECT
    COMPANY_ID,
    SUM(CASE STATUS WHEN IN (0, 1) THEN 1 ELSE 0 END) AS NON_BILLABLE,
    SUM(CASE STATUS WHEN IN (2, 3) THEN 1 ELSE 0 END) AS BILLABLE
FROM TRANSACTIONS
GROUP BY COMPANY_ID