4

给定一个 SQL 表

Transactions
  ID            INT
  COMPANY_ID    INT
  STATUS        INT

whereSTATUS IN (0,1)表示免费交易并STATUS IN (2,3)表示可计费交易,什么简单(我希望)ANSI SQL 语句将显示每笔COMPANY_ID可计费交易、不可计费交易的数量及其比率?

如果不是一个具体的陈述,一个正确方向的概念性刺激是好的。我的第一次尝试是使用WHERE两个状态组的子句在表上进行自联接,但我不知道如何获取表示每个不同计数的列,以便我可以计算比率。

这在概念上与汇总数据非常相似,但我不确定如何将该问题扩展到这个问题。

4

1 回答 1

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
于 2009-11-24T00:24:31.433 回答