MySQL Query根据2个不同的日期条件执行计算和显示数据

时间:2011-01-06 14:12:53

标签: mysql sql

早上好,

我正在尝试将两个查询合并为一个,以便可以将结果数组填充到单个表中。从单个表中提取数据,并且必须对其中一个列进行数学计算。这是我目前的情况:

SELECT 
    laboratory,
    SUM(total_produced_week) AS total_produced_sum, 
    SUM(total_produced_over14) AS total_over14_sum,
    100*(SUM(total_produced_over14)/sum(total_produced_week)) as divided_sum, 
    max(case when metrics_date =maxdate then total_backlog else null end) as total_backlog,
    max(case when metrics_date =maxdate then days_workable else null end) as days_workable,
    max(case when metrics_date =maxdate then workable_backlog else null end) as workable_backlog, 
    max(case when metrics_date =maxdate then deferred_over_30_days else null end) as deferred_over_30_days
FROM 
    test, 
    (
        select max(metrics_date) as maxdate 
        from metrics
    ) as x
WHERE  
    YEAR(metrics_date) = YEAR(CURDATE()) 
    AND MONTH(metrics_date) = MONTH(CURDATE())
GROUP BY 
    laboratory 
ORDER BY 1 ASC

以下是细分:

对于每个实验室网站,我需要:

1)执行MONTH TO DATE(仅当前月份)总和,除以每个站点乘以100以获得百分比。

2)仅显示最近更新日期(metrics_date)的其他列(total_backlog,days_workable,workable_backlog,deferred_over_30_days)。

上面的查询执行#1就好了 - 我得到一个total_produced_sum,total_over14_sum和divide_sum列,并且数学正确。

然而,#2中提到的其他列返回NULL。表格中提供了最近更新日期的数据,因此列应报告该数据。好像我对CASE有问题,但是我对这个功能不太熟悉,所以可能不正确。

我正在运行MySQL 5.0.45

提前感谢任何建议! 克里斯

P.S。以下是两个正常工作的原始查询。这些需要结合起来,以便将完整的结果集输出到由实验室组织的表格中。

查询1:

SELECT SUM(total_produced_week) AS total_produced_sum, 
SUM(total_produced_over14) AS total_over14_sum 
FROM test 
WHERE laboratory = 'Site1' 
AND YEAR(metrics_date) = YEAR(CURDATE()) AND MONTH(metrics_date) = MONTH(CURDATE())

查询2:

SELECT laboratory, total_backlog, days_workable, workable_backlog, deferred_over_30_days,
items_over_10_days, open_ncs, total_produced_week, total_produced_over14 
FROM metrics 
WHERE metrics_date = (select MAX(metrics_date) FROM metrics) 
ORDER BY laboratory ASC

1 个答案:

答案 0 :(得分:0)

操作员错误。

我创建了一个原始表(名为“metrics”)的副本到名为“test”的表。然后,我修改了新“test”表中的metrics_date,以包含2011年1月(月初至今)的数据。虽然执行数学运算的查询的第一部分是使用“测试”表(并且正常工作),但是提取最近更新数据的后半部分是使用原始的“指标”表,其中没有任何表本月有metrics_date的行。

当我将查询更改为对查询的两个部分使用“test”时,一切都按预期工作。现在我觉得自己真傻。

非常感谢,伙计们!