Hola necesito ayuda con una formula que necesito para mostrar unos datos de manera mensual son dos consultas que en ambas son el resultado de una formula
la formula que quiero hacer es la siguiente:
DPM = MTBF/ (MTBF+ MTTR)
esta seria la primer consulta:
Hreales = Horas totales
Paro_mante= Paros por mantenimiento
formula: MTBF= Hrleas/Paro_mante
select monthname(Fproceso) as mes,
sum( Hreales) /
sum(case when Paro_mante = 0 then 1 else Paro_mante end) as mtbf
FROM proceso
group by year(Fproceso), month(Fproceso)
La segunda consulta:
formula: MTTR = Hora_parada / Paro_mante
SELECT MONTHNAME(b.Fecha_ini) AS Mes,
SUM(b.Hora_parada) AS Horas,
IFNULL(p.Paro,0) AS Hparos,
SUM(b.Hora_parada) / CASE when p.Paro = 0 THEN 1 ELSE p.Paro END AS Resul
FROM orden_trabajo as b
INNER JOIn solicitud_mante a
ON a.Id_soli = b.Id_soli
-- Subconsulta de "Paros"
LEFT JOIN (SELECT YEAR(Fproceso) AS anio,
MONTH(Fproceso) AS mes,
SUM(case when Paro_mante = 0 then 1 else Paro_mante end) AS Paro
FROM proceso
GROUP BY YEAR(Fproceso), MONTH(Fproceso)
) p
ON MONTH(b.Fecha_fin) = p.mes
AND YEAR(b.Fecha_fin) = p.anio
WHERE a.Tipo_mante = 'Correctivo Inmediato'
GROUP by
YEAR(b.Fecha_fin),
MONTH(b.Fecha_fin),
IFNULL(p.Paro,0)
Esto es lo que he hecho no se si ire bien pero igual tengo un error y no se cual es porque me confundi
Select a.MTBF/(a.MTBF + b.MTTR)
from
(sum( Hreales) /
sum(case when Paro_mante = 0 then 1 else Paro_mante end) as mtbf
FROM proceso
group by year(Fproceso), month(Fproceso)) a,
(SELECT SUM(case when b.Hora_parada = 0 then 1 else b.Hora_parada) / CASE when p.Paro = 0 THEN 1 ELSE p.Paro END AS MTTR
FROM orden_trabajo as b
INNER JOIn solicitud_mante a
ON a.Id_soli = b.Id_soli
-- Subconsulta de "Paros"
LEFT JOIN (SELECT YEAR(Fproceso) AS anio,
MONTH(Fproceso) AS mes,
SUM(case when Paro_mante = 0 then 1 else Paro_mante end) AS Paro
FROM proceso
GROUP BY YEAR(Fproceso), MONTH(Fproceso)
) p
ON MONTH(b.Fecha_ini) = p.mes
AND YEAR(b.Fecha_ini) = p.anio
WHERE a.Tipo_mante = 'Correctivo Inmediato'
GROUP by
YEAR(b.Fecha_ini),
MONTH(b.Fecha_ini),
IFNULL(p.Paro,0) ) b
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)