Как доставать ставку успеха?

Хорошие у меня есть проблема с консультацией, которая я хочу достать ставку успеха каждого рабочего, консультация, которая у меня есть, - следующая:

    SELECT
    trabajadores.*,

    tiR.nombre AS docu_revisar_tipos_documento,
    doc1.archivo AS docu_revisar_archivo,
    doc1.estado AS docu_revisar,

    tiC.nombre AS docu_contrato_tipos_documento,
    doc2.archivo AS docu_contrato_archivo,
    doc2.estado AS docu_contrato,

    tiAC.nombre AS docu_anexo_contrato_tipos_documento,
    doc3.archivo AS docu_anexo_contrato_archivo,
    doc3.estado AS docu_anexo_contrato,

    tiEM.nombre AS docu_evalu_medica_tipos_documento,
    doc4.archivo AS docu_evalu_medica_archivo,
    doc4.estado AS docu_evalu_medica,

    tiEP.nombre AS docu_entre_epp_tipos_documento,
    doc5.archivo AS docu_entre_epp_archivo,
    doc5.estado AS docu_entre_epp,

    tiRI.nombre AS docu_ri_tipos_documento,
    doc6.archivo AS docu_ri_archivo,
    doc6.estado AS docu_ri,

    tiCO.nombre AS docu_co_tipos_documento,
    doc7.archivo AS docu_co_archivo,
    doc7.estado AS docu_co,

    tiRUT.nombre AS docu_rut_tipos_documento,
    doc8.archivo AS docu_rut_archivo,
    doc8.estado AS docu_rut,

    SUM(CASE WHEN doc1.estado = 4 THEN 1 ELSE 0 END)+SUM(CASE WHEN doc2.estado = 4 THEN 1 ELSE 0 END)+SUM(CASE WHEN doc3.estado = 4 THEN 1 ELSE 0 END)+SUM(CASE WHEN doc4.estado = 4 THEN 1 ELSE 0 END)+SUM(CASE WHEN doc5.estado = 4 THEN 1 ELSE 0 END)+SUM(CASE WHEN doc6.estado = 4 THEN 1 ELSE 0 END)+SUM(CASE WHEN doc7.estado = 4 THEN 1 ELSE 0 END)+SUM(CASE WHEN doc8.estado = 4 THEN 1 ELSE 0 END) total_exitoso,

    COUNT(doc1.estado) D1,
    COUNT(doc2.estado) D2,
    COUNT(doc3.estado) D3,
    COUNT(doc4.estado) D4,
    COUNT(doc5.estado) D5,
    COUNT(doc6.estado) D6,
    COUNT(doc7.estado) D7,
    COUNT(doc8.estado) D8

FROM
    trabajadores
LEFT JOIN trabajadores_documento doc1 ON
    trabajadores.id = doc1.fk_id_trabajador AND doc1.fk_id_tipos_documentos = 1
LEFT JOIN trabajadores_documento doc2 ON
    trabajadores.id = doc2.fk_id_trabajador AND doc2.fk_id_tipos_documentos = 2
LEFT JOIN trabajadores_documento doc3 ON
    trabajadores.id = doc3.fk_id_trabajador AND doc3.fk_id_tipos_documentos = 3
LEFT JOIN trabajadores_documento doc4 ON
    trabajadores.id = doc4.fk_id_trabajador AND doc4.fk_id_tipos_documentos = 4
LEFT JOIN trabajadores_documento doc5 ON
    trabajadores.id = doc5.fk_id_trabajador AND doc5.fk_id_tipos_documentos = 5
LEFT JOIN trabajadores_documento doc6 ON
    trabajadores.id = doc6.fk_id_trabajador AND doc6.fk_id_tipos_documentos = 6
LEFT JOIN trabajadores_documento doc7 ON
    trabajadores.id = doc7.fk_id_trabajador AND doc7.fk_id_tipos_documentos = 7
LEFT JOIN trabajadores_documento doc8 ON
    trabajadores.id = doc8.fk_id_trabajador AND doc8.fk_id_tipos_documentos = 8
LEFT JOIN tipos_documentos tiR ON
    doc1.fk_id_tipos_documentos = tiR.id
LEFT JOIN tipos_documentos tiC ON
    doc2.fk_id_tipos_documentos = tiC.id
LEFT JOIN tipos_documentos tiAC ON
    doc3.fk_id_tipos_documentos = tiAC.id
LEFT JOIN tipos_documentos tiEM ON
    doc4.fk_id_tipos_documentos = tiEM.id
LEFT JOIN tipos_documentos tiEP ON
    doc5.fk_id_tipos_documentos = tiEP.id
LEFT JOIN tipos_documentos tiRI ON
    doc6.fk_id_tipos_documentos = tiRI.id
LEFT JOIN tipos_documentos tiCO ON
    doc7.fk_id_tipos_documentos = tiCO.id
LEFT JOIN tipos_documentos tiRUT ON
    doc8.fk_id_tipos_documentos = tiRUT.id
ORDER BY
    trabajadores.id
DESC

Который я функционирует хорошо, но всякий раз когда у рабочего есть яркие документы, когда я добавляю, новый рабочий в этом списке не появляется у меня, так как у него нет документов поэтому, должен появляться, чтобы так загружать документы

В следующем соединении они могут видеть функционирование подмостков, которые я использую

http://sqlfiddle.com/#!9/79349d/1

Ставка успеха или cumplimento рабочего, в примере SQL находятся эти колонны:

total_exitoso D1 D2 D3 D4 D5 D6 D7 D8

тогда Ваша ставка успеха должна быть:

total_exitoso/D1,D2,D3, И Т.Д. *100, чтобы так мочь иметь процентное содержание каждого рабочего

Спасибо

0
задан 21.03.2019, 16:20
1 ответ

SegГєn она conversaciГіn чата https://chat.stackexchange.com / rooms / 91357/query-mysql , я присоединяю ее soluciГіn достигнутая:

SELECT *,fk_id_trabajador,n_completos/n_subidos*100 tasa_exito FROM (
    SELECT fk_id_trabajador,COUNT(*) n_subidos
      FROM trabajadores_documento
  ) c1 JOIN (
    SELECT fk_id_trabajador,COUNT(*) n_completos
      FROM trabajadores_documento WHERE estado=4
  ) c2 USING(fk_id_trabajador) RIGHT JOIN trabajadores
  ON c1.fk_id_trabajador=trabajadores.id;

HabГ-Хозяев, прибывший в другие промежуточные достаточно интересные решения с картезианским продуктом и внешним продуктом, сочетаемым двумя полями:

SELECT *,IFNULL(estado=4,0) exito FROM (
    SELECT trabajadores.id id_trabajador,
           rut,nombres,apellidos,f_nacimiento,
           sexo,tipos_documentos.id id_documento,nombre
      FROM trabajadores,tipos_documentos  
  ) c1 LEFT JOIN trabajadores_documento
  ON fk_id_trabajador=id_trabajador
  AND fk_id_tipos_documentos=id_documento
  ORDER BY id_trabajador,id_documento;

, Но это не были искавшее. HabГ - в достаточно крошку...

1
ответ дан 02.12.2019, 05:21

Теги

Похожие вопросы