首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化MySQL查询结果

格式化MySQL查询结果
EN

Stack Overflow用户
提问于 2012-06-05 10:12:56
回答 2查看 2K关注 0票数 0

我现在有一张表,如下所示,

代码语言:javascript
复制
Column      Type
time        datetime             
ticket      int(20)              
agentid     int(20)              
ExitStatus  varchar(50)      
Queue       varchar(50)

我想要编写一个查询,它将按周对此进行分解,为每个ExitStatus提供一列计数。到目前为止,我得到了这个,

代码语言:javascript
复制
SELECT ExitStatus,COUNT(ExitStatus) AS ExitStatusCount, DAY(time) AS TimePeriod 
FROM `table` 
GROUP BY TimePeriod, ExitStatus

输出:

代码语言:javascript
复制
ExitStatus ExitStatusCount TimePeriod
NoAgentID                1          4 
Success                  3          4
NoAgentID                1          5
Success                  5          5

我想要更改它,使其以这种格式返回结果:

代码语言:javascript
复制
week | COUNT(NoAgentID) | COUNT(Success) | 

理想情况下,我希望列是动态的,因为其他ExitStatus值也是可能的。

此信息将被格式化,并在页面上的表格中显示给最终用户。这可以在SQL中完成吗?还是应该在PHP中重新格式化?

EN

回答 2

Stack Overflow用户

发布于 2012-06-05 10:24:16

这是一种方法;您可以使用SUM()来计算某个特定条件为真的项数。最后,您只需按照正常的时间进行分组。

代码语言:javascript
复制
SELECT DAY(time) AS TimePeriod, 
  SUM('NoAgentID' = exitStatus) AS NoAgentID, 
  SUM('Success' = exitStatus) AS Success, ...
FROM `table` 
GROUP BY TimePeriod

输出:

代码语言:javascript
复制
4 1 3
5 1 5

但是,这里的列不是动态的,这意味着您必须在进行过程中添加条件。

票数 0
EN

Stack Overflow用户

发布于 2012-06-05 10:24:49

代码语言:javascript
复制
SELECT week(time) AS week,
        SUM(ExitStatus = 'NoAgentID') AS 'COUNT(NoAgentID)',
        SUM(ExitStatus = 'Success') AS 'COUNT(Success)'
FROM `table`
GROUP BY week

我正在猜测ExitStatus列是如何工作的。此外,有许多方法来解释“星期”,例如一年中的星期,月中的星期,或季度中的星期……您将需要将适当的函数放在那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10890719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档