MySQL使用循环从多个日期中选择数据

时间:2014-11-13 19:41:44

标签: mysql

我正在尝试计算各种产品的存活率,我将其定义为90天而不需要任何维修。

基本上使用下面的查询,我能够提取截至今天的数据。我希望能够在今年的每一天运行查询。

我有2张桌子。一个包含每个小部件,另一个包含修复列表。我将两张桌子连在一起,寻找不到90天的记录。

我在网上阅读了大量的例子,并认为这样可行,但它不会运行。有关如何修复此查询的任何建议,或获取此信息的更好方法将不胜感激。

set @BeginDate = '01/01/2014', @EndDate = CURDATE();

Create Procedure dowhile()

Begin

While @BeginDate <= @EndDate Do
 SELECT
    All_Widgets.widget_name, 
    COUNT(DISTINCT(All_Widgets.id_num)) AS Total,
    COUNT(DISTINCT(Repaired_Widgets.id_num)) AS Repaired,
    100 - ((COUNT(DISTINCT(All_Widgets.id_num)) / COUNT(DISTINCT(Repaired_Widgets.id_num)) * 100)) AS survival_rate,
    @BeginDate, @EndDate
FROM All_Widgets
LEFT JOIN Repaired_Widgets ON (All_Widgets.hw_id = ammunition_repair_records.hw_id)
WHERE DATEDIFF(@BeginDate, All_Widgets.timestamp) <= 90
GROUP BY All_Widgets.widget_name

set @BeginDate = DateAdd(@BeginDate, INTERVAL 1 DAY);

End While;
End

0 个答案:

没有答案