我正在尝试计算各种产品的存活率,我将其定义为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