From ed671d47a2ee7853c0b1e50287e0e3dac1f686ff Mon Sep 17 00:00:00 2001 From: Alexandra Date: Wed, 22 Apr 2026 10:39:37 +0200 Subject: [PATCH] =?UTF-8?q?Bericht=20f=C3=BCr=20Korridore=20in=20Bayern=20?= =?UTF-8?q?SupportOID=3D160800?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ualifiziert erbracht (Korridore Bayern).txt | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Queries/Anteil Zeiterfassung Über- Unterqualifiziert erbracht (Korridore Bayern).txt diff --git a/Queries/Anteil Zeiterfassung Über- Unterqualifiziert erbracht (Korridore Bayern).txt b/Queries/Anteil Zeiterfassung Über- Unterqualifiziert erbracht (Korridore Bayern).txt new file mode 100644 index 000000000..97276c13e --- /dev/null +++ b/Queries/Anteil Zeiterfassung Über- Unterqualifiziert erbracht (Korridore Bayern).txt @@ -0,0 +1,51 @@ +-- Wie viel Prozent der Stunden wurden bei Leistungskategorie Qualifiziert durch Assistenzkraft erbracht und andersrum +-- 3432911735 (APP4) Caritasverband GünzburgNeuUlm + + -- *** Mapping (kundenspezifisch anpassen) *** + -- Leistungskategorie 'Qualifiziert' -> passende Qualifikation: Q1, Q2 + -- Leistungskategorie 'Unterstützend' -> passende Qualifikation: Q3, Q4 + +SELECT + p.LastName AS 'Nachname', + p.Firstname AS 'Vorname', + c2s.ApprovedStartDate AS 'Bewilligt von', + c2s.ApprovedEndDate AS 'Bewilligt bis', + ROUND(SUM(CASE WHEN scat.Name = 'Qualifiziert' AND q12.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Qualifiziert durch Q1/Q2', + ROUND(SUM(CASE WHEN scat.Name = 'Qualifiziert' AND q34.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Qualifiziert durch Q3/Q4', + ROUND(SUM(CASE WHEN scat.Name = 'Unterstützend' AND q12.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Unterstützend durch Q1/Q2', + ROUND(SUM(CASE WHEN scat.Name = 'Unterstützend' AND q34.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Unterstützend durch Q3/Q4', + ROUND(SUM(CASE WHEN q12.EmployeeOid IS NULL AND q34.EmployeeOid IS NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) / 60, 2) AS 'Ohne Qualifikation', + ROUND(SUM(sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount)) / 60, 2) AS 'Gesamt (Std)', + -- Unterqualifiziert: Qualifiziert durch Q3/Q4 in % + ROUND(SUM(CASE WHEN scat.Name = 'Qualifiziert' AND q34.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) + / NULLIF(SUM(CASE WHEN scat.Name = 'Qualifiziert' THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END), 0) * 100, 1) AS '% Unterqualifiziert', + -- Überqualifiziert: Unterstützend durch Q1/Q2 in % + ROUND(SUM(CASE WHEN scat.Name = 'Unterstützend' AND q12.EmployeeOid IS NOT NULL THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END) + / NULLIF(SUM(CASE WHEN scat.Name = 'Unterstützend' THEN sr.Roundedduration / IF(sr.GroupEmployeeCount IS NULL, 1, sr.GroupEmployeeCount) ELSE 0 END), 0) * 100, 1) AS '% Überqualifiziert' +FROM servicerecord sr +JOIN costbearer2supportconcept c2s ON sr.CostBearer2SupportConceptOid = c2s.Oid +JOIN supportconcept sc ON c2s.SupportConceptOid = sc.Oid +JOIN customer c ON sc.CustomerOid = c.Oid +JOIN person p ON c.PersonOid = p.Oid +JOIN servicedescription sd ON sd.Oid = sr.ServiceDescriptionOid +JOIN servicecategory scat ON scat.Oid = sd.ServiceCategoryOid + +-- *** Mapping (kundenspezifisch anpassen) *** +LEFT JOIN ( + SELECT DISTINCT v2o.ObjectOid AS EmployeeOid + FROM valuelistentry2object v2o + JOIN valuelistentry vle ON vle.Oid = v2o.ValuelistEntryOid + WHERE v2o.ObjectTid = 2 AND v2o.IsActive = 1 AND vle.Type = 5 AND vle.IsActive = 1 AND vle.Value IN ('Q1', 'Q2') -- Qualifikationen für 'Qualifiziert' +) q12 ON q12.EmployeeOid = sr.EmployeeOid + +LEFT JOIN ( + SELECT DISTINCT v2o.ObjectOid AS EmployeeOid + FROM valuelistentry2object v2o + JOIN valuelistentry vle ON vle.Oid = v2o.ValuelistEntryOid + WHERE v2o.ObjectTid = 2 AND v2o.IsActive = 1 AND vle.Type = 5 AND vle.IsActive = 1 AND vle.Value IN ('Q3', 'Q4') -- Qualifikationen für 'Unterstützend' +) q34 ON q34.EmployeeOid = sr.EmployeeOid +-- *** Ende Mapping *** +WHERE scat.Billable = 1 AND c2s.ApprovedStartDate <= CURDATE() AND (c2s.ApprovedEndDate >= CURDATE() OR c2s.ApprovedEndDate IS NULL) +-- AND sr.StartDate >= ':Von' AND sr.StartDate < ':Bis' +GROUP BY p.LastName, p.Firstname, c2s.ApprovedStartDate, c2s.ApprovedEndDate +ORDER BY p.LastName; \ No newline at end of file