【问题标题】:MySQL Case When Count, using custom groupsMySQL Case When Count,使用自定义组
【发布时间】:2013-10-24 13:18:44
【问题描述】:

我试图弄清楚如何计算我在此查询中创建的三个组中的每一个的实例有多少:

SELECT
CASE WHEN idStatus=6 THEN "Accepted"
WHEN idStatus in (7,8) THEN "Denied"
WHEN idStatus in (1,2,3,4,5,9,10,11,12,13,14) THEN "Working" END AS 'Claim Status'
FROM claims
WHERE Date > '2013-01-01'

我想要一个包含两列“索赔状态”和“计数”的结果,并在下面列出我的三个组中的每一个以及它们在表格中的计数。

【问题讨论】:

    标签: mysql count case


    【解决方案1】:

    如果您将查询“包装”在另一个 select 语句中,那么性能将显着下降。您应该按要计算的字段进行分组:

    SELECT
    CASE
        WHEN idStatus = 6 THEN "Accepted"
        WHEN idStatus IN (7,8) THEN "Denied"
        WHEN idStatus IN (1,2,3,4,5,9,10,11,12,13,14) THEN "Working"
    END AS ClaimStatus,
    COUNT(*) ClaimCount
    FROM claims
    WHERE Date > '2013-01-01'
    GROUP BY ClaimStatus
    

    【讨论】:

      【解决方案2】:

      只需用外部查询包装您的查询即可进行分组:

      SELECT claim_status AS 'Claim Status', COUNT(*) AS 'Count'
      FROM (
          SELECT
          CASE 
              WHEN idStatus=6 THEN "Accepted"
              WHEN idStatus in (7,8) THEN "Denied"
              WHEN idStatus in (1,2,3,4,5,9,10,11,12,13,14) THEN "Working" 
          END AS claim_status
          FROM claims
          WHERE Date > '2013-01-01'
      } t
      GROUP BY claim_status
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-30
        • 1970-01-01
        • 1970-01-01
        • 2019-09-06
        • 1970-01-01
        • 2012-01-18
        • 1970-01-01
        相关资源
        最近更新 更多