2012-07-30 83 views
0

因此,我们有一个表格,基本上包含了一张票的大部分票据详情,除了可怕的很长的东西(如笔记,技术说明,图片等)外,这些表格与其他表中的其他地方等。MySQL数据统计

我们希望返回有关数据表中各种票据的度量标准。例如:

SELECT Category, Count(Category) FROM tickets 
WHERE Date_SUB(CURDATE(), Interval 16 Hour) <= Datez GROUP BY Category 

这将返回一个结果列表,例如,我们的每一个类别,以及它们的计数。

但是,如果我们要调整这种对不同的时间间隔,像比如说16 hours1 day30 day3 month12 monthAll time返回的数字,我们要必须运行同一查询的时间#(如对于列出的每一个减去所有时间,运行该查询5次?

最终,我们希望在我们的C#Winforms应用程序中使用某种仪表板中的计数,这会向我们显示各种票数据,所以我们可以看看这个部门是怎么做的;但是,如果我们必须坐在那里并且每隔几分钟运行5次查询,那可能会导致系统停滞不前?

回答

1

你可以尝试这样的事:

SELECT 
    Category, 
    IF(Date_SUB(CURDATE(), Interval 16 Hour) <= Datez, SUM(1), 0) AS c16hours, 
    IF(Date_SUB(CURDATE(), Interval 1 day) <= Datez, SUM(1), 0) AS c1day, 
    IF(Date_SUB(CURDATE(), Interval 30 days) <= Datez, SUM(1), 0) AS c30days, 
    (...) 
FROM tickets 
GROUP BY Category 

这应该工作(但我没有测试过的例子,只是给你一些理论)!

祝你好运。

-1

我确定你可以在WHERE语句之后添加一个AND语句来继续这个列表。

这将确定。缩短它