【问题标题】:MySQL Query count with multiple group per date/time每个日期/时间具有多个组的 MySQL 查询计数
【发布时间】:2015-04-30 12:51:33
【问题描述】:

MySQL 表中有以下数据:

+-------------------------------------+-----------------+
|            DATE                     | SipResponseCode |
+-------------------------------------+-----------------+
| 20 Feb                              |             200 |
| 20 Feb                              |             500 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             487 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             500 |
| 20 Feb                              |             500 |
| 20 Feb                              |             487 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             500 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             500 |
| 21 Feb                              |             200 |
| 21 Feb                              |             487 |
| 21 Feb                              |             200 |
| 21 Feb                              |             487 |
| 21 Feb                              |             487 |
| 21 Feb                              |             487 |
| 21 Feb                              |             487 |
| 21 Feb                              |             200 |
| 21 Feb                              |             200 |
| 21 Feb                              |             487 |
| 21 Feb                              |             487 |
| 21 Feb                              |             500 |

我想编写 SQL 查询,这样它就可以给我每天的 SipResponseCode 计数 200487500

+-------------------------------------+------------+-----------+--------+
|            DATE                     |    200     |    487    |   500  |
+-------------------------------------+------------+--------------------+
| 20 Feb                              |     14     |      2    |    5   |
| 21 Feb                              |     4      |      7    |    1   | 

我很累,但无法得到正确的结果。

【问题讨论】:

  • @Strawberry 我不是SQL expert 伙计,加油!来这里寻求帮助..我需要专家才能提出问题吗?
  • 值 200、487 和 500 是否一致?这些价值观是你提前知道的吗?
  • @McAdam331 是的,这些值是固定的,还有更多的 SipResponsecode 502,403,408 等。但是一旦我知道如何将它们组合在一起,我将设法调整它们
  • @Strawberry 我不认为这种态度对 StackOverflow 有帮助。这应该是人们在需要时寻求帮助的地方,而不必担心因不知道而被贬低。
  • @Strawberry 我擅长 Linux 系统管理员,但不是开发人员(SQL 编写者),只是被困在这里,所以认为你们会提供帮助,但看起来你 down 已经投票了......非常失望:(

标签: mysql sql


【解决方案1】:

标准答案大致如下:

SELECT date
     , sipresponsecode
     , COUNT(sipresponsecode) x 
  FROM my_table 
 GROUP 
    BY date
     , sipresponsecode;

【讨论】:

    【解决方案2】:

    以下查询将为您提供结果,不是您想要的,而是以一种简单的方式稍后用您的语言(PHP、C# 等)解析它。

    SELECT  DATE, GROUP_CONCAT(CAST(TEST AS CHAR(10000) CHARACTER SET utf8) SEPARATOR ",") AS myCol
    FROM
    (
        SELECT      DATE, CONCAT(SipResponseCode, "^",  COUNT(*)) AS TEST
        FROM        table1
        GROUP BY    DATE, SipResponseCode
    ) a
    GROUP BY DATE
    

    【讨论】:

      【解决方案3】:

      如果值 200、487 和 500 是您在编写查询时知道的常量值,则可以在 select 子句的 case 语句中使用这些值。

      比 case 语句更易读的方法是使用带有条件的 SUM() 函数,它本质上将计算满足该条件的行数。试试这个:

      SELECT dateColumn, 
         SUM(SisResponseCode = 200) AS '200', 
         SUM(SisResponseCode = 487) AS '487', 
         SUM(SisResponseCode = 500) AS '500'
      FROM myTable
      GROUP BY dateColumn;
      

      【讨论】:

        猜你喜欢
        • 2020-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 2017-10-22
        • 2014-12-28
        相关资源
        最近更新 更多