- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一张表,用于存储工单请求,并记录请求日期和解决日期。
我想设计一个查询,以历史显示每周系统中有多少 Unresolved 工单。
问题是,如果我使用请求的日期作为组标准,那么超过一周 Unresolved 工单不会被计算两次。我想确保任何 Unresolved 时间超过我的团队人数的工单,都会根据需要多次贡献其计数。
例如,具有以下数据:
id requested resolved
== ========== ==========
1 2015-07-01 2015-07-02
2 2015-07-01 NULL
3 2015-07-08 2015-07-10
4 2015-07-08 NULL
第一周 (26) 和第二周 (27) 各有两个请求。每周都有一个已解决和一个 Unresolved 请求,因此查询结果应该显示第一周有 1 个未解决,第二周有 2 个未解决。 (解决日期在未来一周内的项目也算作未解决,但为了简化此示例,我只显示空日期。)
我希望结果显示:
year week # unresolved
==== ==== ============
2015 26 1
2015 27 2
我目前的查询:
SELECT
YEAR(requested) `year`,
WEEK(requested, 5) `week`,
COUNT(id) `# unresolved`
FROM
tickets
WHERE
WEEK(requested) < WEEK(resolved)
OR resolved IS NULL
GROUP BY `Year`, `Week`;
每周只显示 1 个 Unresolved 工单:
year week # unresolved
==== ==== ============
2015 26 1
2015 27 1
我应该注意什么以适本地修改此查询?
http://sqlfiddle.com/#!9/90782/1/0
编辑:
作为附加信息,这是一个相对简单的查询,当提供任何特定的星期进行检查时:
SELECT
COUNT(id) `# unresolved`
FROM
tickets
WHERE
WEEK(requested) <= WEEK('2015-07-01')
AND
(
WEEK(resolved) > WEEK('2015-07-01')
OR resolved IS NULL
);
通过更改输入周,可以获得任何感兴趣周的未解决工单数量。我的目标是创建一个查询,该查询将按周对所有可用数据进行分组,而不是针对单周结果修改此查询。
最佳答案
(注意:我展示的是我的思考过程,但你只需要这个答案中的最后一个查询)
(注2:勾选sqlfiddle here)
我会将请求的工单和解决的工单视为两种不同类型的事件,所以
select requested eventDate, 1 ticketChange from table
会给我每张请求的票数 1 和
select resolved eventDate, -1 ticketChange from table
会为每张已解决的票给我 -1 计数。如果我对这两个查询进行合并,我会得到一个带有 +1 和 -1 的日期列表,用于确定是添加还是解决了工单。所以我可以通过做每周得到一个总 Unresolved 问题
select year(eventDate) myYear, week(eventDate) myWeek, sum(ticketChange) totTicketChange
from (select requested eventDate, 1 ticketChange from table union all
select resolved eventDate, -1 ticketChange from table where resolved is not null)
group by year(eventDate) asc, week(eventDate) asc
但由于您需要累计总数,因此我将定义一个变量@unresolvedCount 并在我遍历选择行时递增它:
set @unresolvedCount := 0;
select myYear, myWeek, (@unresolvedCount := @unresolvedCount + totTicketChange) unresolved
from (select year(eventDate) myYear, week(eventDate) myWeek, sum(ticketChange) totTicketChange
from (select requested eventDate, 1 ticketChange from tickets union all
select resolved eventDate, -1 ticketChange from tickets where resolved is not null) TicketEvents
group by year(eventDate) asc, week(eventDate) asc) TicketCummulative
这正是您想要的。我已经用上面提到的 fiddle 检查过它,如果你能找到一个更有效的算法来做你想做的事情,我会感到惊讶。我还建议您单独运行每个内部查询,查看其结果,然后自行解决。这将使您深入了解其工作原理。
如果您只想获得特定时间段(比如当年)的结果,可以根据需要使用三种不同的方法。如果你想只统计这个时间段内请求的工单,也就是说,比如你不想统计去年请求的工单,即使它们仍然没有解决,甚至如果他们今年得到解决,那么您可以将最里面的查询更改为:
select requested eventDate, 1 ticketChange from tickets where requested >= '2015-01-01' union all
select resolved eventDate, -1 ticketChange from tickets where requested >= '2015-01-01' and resolved is not null
如果您想计算在给定时间段内请求或解决的工单,则可以将最里面的查询更改为:
select requested eventDate, 1 ticketChange from tickets where requested >= '2015-01-01' union all
select resolved eventDate, -1 ticketChange from tickets where resolved is not null and resolved >= '2015-01-01'
如果你想计算所有工单,只要它们在当前时间段内被请求或解决,或者如果它们仍然未解决(即使它们已经 3 年了),那么你将不得不测试日期,在完整查询的最后,让内部查询处理所有工单。
... group by year(eventDate) asc, week(eventDate) asc) TicketCummulative where myYear >= 2015 and myWeek >= 1
关于mysql - 如何计算 MySQL 中每周符合条件的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31417008/
我有一个包含未定义条目数的数据文件,如下所示: A B C D E.. 1 0 2 5 4 7 4 3 4 1 8 7 4 0 7 1 1 第一行代表工作时间,而不是暂停等交替方式。为了可
我需要有关小型 SQL 查询的帮助。考虑下表: TicketNo | Rules | Audit Result --------------------------------- P
我有一个非常大的表(~1 000 000 行)和带有联合、连接和 where 语句的复杂查询(用户可以选择不同的 ORDER BY 列和方向)。我需要获取分页的行数。如果我运行查询而不计算行数,它会很
我想获取数据帧的行数。 我可以通过 size(myDataFrame)[1] 实现这一点. 有更干净的方法吗? 最佳答案 如果您正在使用 DataFrames具体来说,那么你可以使用 nrow() :
是否可以在带有千位分隔符的 VIM 状态栏中显示行数,最好是自定义千位分隔符? 例子: set statusline=%L 应该导致“1,234,567”而不是“1234567”。 最佳答案 我找到了
我有一个非常基本的问题,但不知道该怎么做。如果 mysql 表中的行数增加,我想刷新页面。我已经尝试了一些不同的事情,比如在表中添加一个单独的列,如果行数和这个值相等,则值为 (id + 1),然后进
我的 mysql TB 中的行数(如 TB 信息中所示)是 11093,而自动递增 ID(从 1 开始)是 11361。为什么会这样? 最佳答案 删除的行不会重置 AI 索引。行数是当前表中的条目数,
我有一个 MySQL 表如下。 emp_no emp_name dob gender 1 A 1978-10-10 Male 2 B
ifstream inFile; inFile.open(filename); //open the input file stringstream strStream; strStream << i
SELECT * FROM table1 WHERE EXISTS (SELECT * FROM table2 WHERE *condition*) 例如,我可以检查是否有 3 行符合 table2
我正在尝试提取 SQL 表中的总行数。 我正在使用以下代码: $rowNum = mysql_query("SELECT COUNT(*) FROM Logs"); $count = mysql_fe
我想知道表格 View 的行宽是多少,UITableViewCell 文本标签的字体是什么,有人可以帮我吗? 最佳答案 NSLog(@"width: %f", cell.frame.size.widt
对于以下内容: def linecount(filename): count = 0 for x in open(filename): count += 1 r
感谢关注。 我用C语言写了一段代码来统计字数、行数和字符数。 while((c = fgetc(fp)) != EOF) { if((char)(c) == ' ' || (char)(c)
我是 matlab 的新手,只需要更改代码中的一个非常小的东西。我有以下矩阵: ans = 1 1 1 1 2 1 2 1
我只是想弄清楚如何确定行数,然后使该数字显示在 HTML 中。 我准备好的声明如下所示: if($stmt = $mysqli -> prepare("SELECT field1, field2, f
PDO 显然无法计算从选择查询返回的行数(mysqli 有 num_rows 变量)。 除了使用 count($results->fetchAll()) 之外,有没有办法做到这一点? 最佳答案 根据手
SELECT count(*) FROM Stack WHERE Id = 33478 GROUP BY SID Output: (No column name) 1 4 对于结果;有两排。怎么退货
IE。如果我们有一个包含400万行的表。 其中具有一个STATUS字段,该字段可以采用以下值:TO_WORK,BLOCKED或WORKED_CORRECTLY。 您是否会在一个仅会更改一次的字段上进行
所以在JTextArea中有一个getLineCount()是否有与JTextPane类似的东西,因为我可以找到任何东西。也许有不同的方法来获得它?我想获取当前存在的行数。 最佳答案 (正如您所指出的
我是一名优秀的程序员,十分优秀!