paverВалерий666Не совсем то, что надо.
А это и не замена исходного запроса. Я предлагаю вместо FROM registration использовать FROM (мой_селект), чтобы избавиться от диких кейсов.
Я с MySQL "на ВЫ", так что не совсем представляю конечную конструкцию и ее смыл...
У меня есть несколько таблиц.
Таблица А: Пользователи (справочник)
Таблица Б: Режимы работы (справочник)
Таблица В: Заметки
Таблица Г: Входы - Выходы пользователей.
То, что есть у меня сейчас, запрос, результатом которого выводится график входа\выхода пользователей в разрезе месяца, с пометками и связанным графиком рабочего времени.
Что мне нужно еще, это вывести отработанное время в разрезе месяца, и подбить количество отработанных часов за месяц по каждому сотруднику.
Первый запрос получился вот таким(генерируется автоматически, в данном примере февраль и срез по участоку розничной торговли):
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92.
SELECT users.ufio,
users.sh_id,
users.userid,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-01' THEN TIME_FORMAT(registration.datein ,'%H:%i') END) AS din1,
MAX(CASE WHEN (notes.daten='2019-02-01') AND (users.userid=notes.userid) THEN notes.note END) AS note1,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-01' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout1,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-02' THEN TIME_FORMAT(registration.datein ,'%H:%i') END) AS din2,
MAX(CASE WHEN (notes.daten='2019-02-02') AND (users.userid=notes.userid) THEN notes.note END) AS note2,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-02' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout2,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-03' THEN TIME_FORMAT(registration.datein ,'%H:%i') END) AS din3,
MAX(CASE WHEN (notes.daten='2019-02-03') AND (users.userid=notes.userid) THEN notes.note END) AS note3,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-03' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout3,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-04' THEN TIME_FORMAT(registration.datein ,'%H:%i') END) AS din4,
MAX(CASE WHEN (notes.daten='2019-02-04') AND (users.userid=notes.userid) THEN notes.note END) AS note4,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-04' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout4,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-05' THEN TIME_FORMAT(registration.datein ,'%H:%i') END) AS din5,
MAX(CASE WHEN (notes.daten='2019-02-05') AND (users.userid=notes.userid) THEN notes.note END) AS note5,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-05' THEN TIME_FORMAT(registration.dateout, '%H:%i') END) AS dout5,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-06' THEN TIME_FORMAT(registration.datein ,'%H:%i') END) AS din6,
MAX(CASE WHEN (notes.daten='2019-02-06') AND (users.userid=notes.userid) THEN notes.note END) AS note6,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-06' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout6,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-07' THEN TIME_FORMAT(registration.datein ,'%H:%i') END) AS din7,
MAX(CASE WHEN (notes.daten='2019-02-07') AND (users.userid=notes.userid) THEN notes.note END) AS note7,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-07' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout7,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-08' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din8,
MAX(CASE WHEN (notes.daten='2019-02-08') AND (users.userid=notes.userid) THEN notes.note END) AS note8,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-08' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout8,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-09' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din9,
MAX(CASE WHEN (notes.daten='2019-02-09') AND (users.userid=notes.userid) THEN notes.note END) AS note9,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-09' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout9,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-10' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din10,
MAX(CASE WHEN (notes.daten='2019-02-10') AND (users.userid=notes.userid) THEN notes.note END) AS note10,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-10' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout10,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-11' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din11,
MAX(CASE WHEN (notes.daten='2019-02-11') AND (users.userid=notes.userid) THEN notes.note END) AS note11,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-11' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout11,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-12' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din12,
MAX(CASE WHEN (notes.daten='2019-02-12') AND (users.userid=notes.userid) THEN notes.note END) AS note12,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-12' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout12,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-13' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din13,
MAX(CASE WHEN (notes.daten='2019-02-13') AND (users.userid=notes.userid) THEN notes.note END) AS note13,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-13' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout13,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-14' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din14,
MAX(CASE WHEN (notes.daten='2019-02-14') AND (users.userid=notes.userid) THEN notes.note END) AS note14,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-14' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout14,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-15' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din15,
MAX(CASE WHEN (notes.daten='2019-02-15') AND (users.userid=notes.userid) THEN notes.note END) AS note15,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-15' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout15,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-16' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din16,
MAX(CASE WHEN (notes.daten='2019-02-16') AND (users.userid=notes.userid) THEN notes.note END) AS note16,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-16' THEN TIME_FORMAT(registration.dateout, '%H:%i') END) AS dout16,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-17' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din17,
MAX(CASE WHEN (notes.daten='2019-02-17') AND (users.userid=notes.userid) THEN notes.note END) AS note17,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-17' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout17,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-18' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din18,
MAX(CASE WHEN (notes.daten='2019-02-18') AND (users.userid=notes.userid) THEN notes.note END) AS note18,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-18' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout18,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-19' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din19,
MAX(CASE WHEN (notes.daten='2019-02-19') AND (users.userid=notes.userid) THEN notes.note END) AS note19,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-19' THEN TIME_FORMAT(registration.dateout, '%H:%i') END) AS dout19,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-20' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din20,
MAX(CASE WHEN (notes.daten='2019-02-20') AND (users.userid=notes.userid) THEN notes.note END) AS note20,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-20' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout20,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-21' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din21,
MAX(CASE WHEN (notes.daten='2019-02-21') AND (users.userid=notes.userid) THEN notes.note END) AS note21,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-21' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout21,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-22' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din22,
MAX(CASE WHEN (notes.daten='2019-02-22') AND (users.userid=notes.userid) THEN notes.note END) AS note22,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-22' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout22,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-23' THEN TIME_FORMAT(registration.datein ,'%H:%i') END) AS din23,
MAX(CASE WHEN (notes.daten='2019-02-23') AND (users.userid=notes.userid) THEN notes.note END) AS note23,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-23' THEN TIME_FORMAT(registration.dateout, '%H:%i') END) AS dout23,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-24' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din24,
MAX(CASE WHEN (notes.daten='2019-02-24') AND (users.userid=notes.userid) THEN notes.note END) AS note24,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-24' THEN TIME_FORMAT(registration.dateout, '%H:%i') END) AS dout24,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-25' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din25,
MAX(CASE WHEN (notes.daten='2019-02-25') AND (users.userid=notes.userid) THEN notes.note END) AS note25,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-25' THEN TIME_FORMAT(registration.dateout,'%H:%i') END) AS dout25,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-26' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din26,
MAX(CASE WHEN (notes.daten='2019-02-26') AND (users.userid=notes.userid) THEN notes.note END) AS note26,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-26' THEN TIME_FORMAT(registration.dateout, '%H:%i') END) AS dout26,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-27' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din27,
MAX(CASE WHEN (notes.daten='2019-02-27') AND (users.userid=notes.userid) THEN notes.note END) AS note27,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-27' THEN TIME_FORMAT(registration.dateout, '%H:%i') END) AS dout27,
MIN(CASE WHEN DATE(registration.datein) = '2019-02-28' THEN TIME_FORMAT(registration.datein , '%H:%i') END) AS din28,
MAX(CASE WHEN (notes.daten='2019-02-28') AND (users.userid=notes.userid) THEN notes.note END) AS note28,
MAX(CASE WHEN DATE(registration.dateout) = '2019-02-28' THEN TIME_FORMAT(registration.dateout, '%H:%i') END) AS dout28
FROM registration
RIGHT JOIN users ON users.rfid_id= registration.rfid_id
LEFT JOIN notes ON users.userid=notes.userid
WHERE users.wpid=(SELECT pid FROM workplaces WHERE name='Участок розничной торговли')
GROUP BY users.ufio
Вероятнее всего это дикий изврат, но как сделать по-другому, что был такой же результат, я не знаю.
По аналогии делаю такой же запрос на отработку времени.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
SELECT users.ufio,
users.sh_id,
users.userid,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-01' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-01' THEN registration.dateout END))),'%H:%i') AS td1,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-02' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-02' THEN registration.dateout END))),'%H:%i') AS td2,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-03' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-03' THEN registration.dateout END))),'%H:%i') AS td3,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-04' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-04' THEN registration.dateout END))),'%H:%i') AS td4,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-05' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-05' THEN registration.dateout END))),'%H:%i') AS td5,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-06' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-06' THEN registration.dateout END))),'%H:%i') AS td6,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-07' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-07' THEN registration.dateout END))),'%H:%i') AS td7,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-08' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-08' THEN registration.dateout END))),'%H:%i') AS td8,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-09' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-09' THEN registration.dateout END))),'%H:%i') AS td9,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-10' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-10' THEN registration.dateout END))),'%H:%i') AS td10,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-11' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-11' THEN registration.dateout END))),'%H:%i') AS td11,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-12' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-12' THEN registration.dateout END))),'%H:%i') AS td12,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-13' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-13' THEN registration.dateout END))),'%H:%i') AS td13,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-14' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-14' THEN registration.dateout END))),'%H:%i') AS td14,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-15' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-15' THEN registration.dateout END))),'%H:%i') AS td15,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-16' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-16' THEN registration.dateout END))),'%H:%i') AS td16,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-17' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-17' THEN registration.dateout END))),'%H:%i') AS td17,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-18' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-18' THEN registration.dateout END))),'%H:%i') AS td18,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-19' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-19' THEN registration.dateout END))),'%H:%i') AS td19,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-20' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-20' THEN registration.dateout END))),'%H:%i') AS td20,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-21' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-21' THEN registration.dateout END))),'%H:%i') AS td21,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-22' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-22' THEN registration.dateout END))),'%H:%i') AS td22,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-23' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-23' THEN registration.dateout END))),'%H:%i') AS td23,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-24' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-24' THEN registration.dateout END))),'%H:%i') AS td24,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-25' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-25' THEN registration.dateout END))),'%H:%i') AS td25,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-26' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-26' THEN registration.dateout END))),'%H:%i') AS td26,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-27' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-27' THEN registration.dateout END))),'%H:%i') AS td27,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-28' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-28' THEN registration.dateout END))),'%H:%i') AS td28,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-29' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-29' THEN registration.dateout END))),'%H:%i') AS td29,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-30' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-30' THEN registration.dateout END))),'%H:%i') AS td30,
TIME_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN DATE(registration.datein) = '2019-03-31' THEN registration.datein END),MAX(CASE WHEN DATE(registration.dateout) = '2019-03-31' THEN registration.dateout END))),'%H:%i') AS td31
FROM registration
RIGHT JOIN users ON users.rfid_id= registration.rfid_id
LEFT JOIN notes ON users.userid=notes.userid
WHERE users.wpid=(SELECT pid FROM workplaces WHERE name='Контора')
GROUP BY users.ufio
Результат меня в принципе тоже устраивает, но нужна еще, как я писал выше, итоговая колонка с суммой отработанного времени.
|