【问题标题】:SQL query which counts status of grouped by month w. revision system统计按月 w 分组的状态的 SQL 查询。修订系统
【发布时间】:2011-11-02 00:28:59
【问题描述】:

在尝试生成随时间推移的工单状态视图时,我遇到了一些挑战:

背景:

包含票证记录的数据库已设置为允许进行基本的重新构想,并包括以下列(我认为这是相关的):

ID - 原始 - 状态 - 创建日期 - 修改

所需的解决方案:

一个表格,其中包括:按周/月/年分组的每个状态的计数。

挑战:

不包括状态未更改的任何修订。

提前感谢您的帮助,这让我的大脑发热:)

【问题讨论】:

  • 非常感谢您的帮助!这是似乎有效的解决方案:SELECT COUNT(t1.status), month(t1.date_modified), year(t1.date_modified), week(t1.date_modified), t1.status FROM trends as t1 JOIN trends as t2 ON (t1.original = t2.ID) WHERE t1.status != t2.status GROUP BY MONTH(date_modified), status;

标签: php mysql join group-by revisions


【解决方案1】:

应该是这样的(不按日期分组):

 SELECT t1.*
 FROM table as t1
 JOIN table as t2 ON (t1.original = t2.ID)
 WHERE t1.status != t2.status;

【讨论】:

  • 我没有足够的声誉来投票,但我希望我这样做 :) 感谢您的宝贵时间!
【解决方案2】:

EXISTS/NOT EXISTS 的子查询应该是您要查找的内容。

【讨论】:

  • 只是为了帮助我了解该功能如何应用于此问题,您能否提供更多详细信息? (对时间不敏感:)
  • 我想我误解了你的问题 :) 基本上 - EXISTS()WHERE 子句中使用的一个函数,它接受一个子查询 (SELECT...) 作为参数,如果它返回任何参数,则返回 TRUE行。在简单的情况下,它的执行速度与执行类似工作的连接一样快(并且可读性更高,更容易编写),有时它会更慢。
猜你喜欢
  • 1970-01-01
  • 2013-07-21
  • 1970-01-01
  • 2018-04-27
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多