2 Abfragen zusammenfassen

didi577

Bekanntes Mitglied
Hi,

ich habe zwei funktionierende Abfragen die ich gern zu einer performanten Abfrage zusammenfassen würde. Also zwei Abfragen mit je 3 Spalten zu einer Abfrage mit 5 Spalten da Spalte 1 identisch ist. Die ersta Abfrage liefert eine Anzahl je Tag und die zweite Anzahl die Summe der Woche zum ausgewählten Tag.

SQL:
SELECT DISTINCT t.user29, COUNT(t.tnumber) AS Anzahl1, FORMAT(COUNT(t.tnumber)/ (SELECT COUNT(t.tnumber) FROM crmdb.tickets t WHERE t.user22 = 'Planung/Bewirtschaftung' AND t.tnumber LIKE 'HL-%' AND (from_unixtime(t.createtime, '%Y-%m-%d')) = '2019-11-14')*100, 0)AS Anteil1
FROM crmdb.tickets t 
WHERE t.user22 = 'Planung/Bewirtschaftung' 
AND t.tnumber LIKE 'HL-%' 
AND from_unixtime(t.createtime, '%Y-%m-%d') = '2019-11-14' 
GROUP BY t.user29 WITH ROLLUP
;
und:
SQL:
SELECT DISTINCT t.user29, COUNT(t.tnumber) AS Anzahl2, FORMAT(COUNT(t.tnumber)/ (SELECT COUNT(t.tnumber) FROM crmdb.tickets t WHERE t.user22 = 'Planung/Bewirtschaftung' AND t.tnumber LIKE 'HL-%' AND (from_unixtime(t.createtime, '%u') = 46) AND (from_unixtime(t.createtime, '%Y')) = 2019)*100, 0) AS Anteil2 
FROM crmdb.tickets t 
WHERE t.user22 = 'Planung/Bewirtschaftung'
AND t.tnumber LIKE 'HL-%'
AND from_unixtime(t.createtime, '%u') = 46
AND from_unixtime(t.createtime, '%Y') = 2019
GROUP BY t.user29 WITH ROLLUP
;

wer kann mir helfen ??

Grüße
 

didi577

Bekanntes Mitglied
Ich habe einen Lösungsweg gefunden:
SQL:
SELECT DISTINCT t.user29, IFNULL(e.Anzahl1, 0), IFNULL(e.Anteil1, 0), IFNULL(d.Anzahl2, 0), IFNULL(d.Anteil2, 0)
FROM crmdb.tickets t 
LEFT JOIN (SELECT DISTINCT t.user29, COUNT(t.id) AS Anzahl1, FORMAT(COUNT(t.id)/ (SELECT COUNT(t.id) FROM crmdb.tickets t WHERE t.user22 = 'Planung/Bewirtschaftung' AND t.tnumber LIKE 'HL-%' AND (from_unixtime(t.createtime, '%Y-%m-%d')) = '2019-11-11')*100, 0)AS Anteil1
FROM crmdb.tickets t 
WHERE t.user22 = 'Planung/Bewirtschaftung' 
AND t.tnumber LIKE 'HL-%' 
AND from_unixtime(t.createtime, '%Y-%m-%d') = '2019-11-11' 
GROUP BY t.user29) e ON e.user29 = t.user29
right JOIN (SELECT DISTINCT t.user29, COUNT(t.id) AS Anzahl2, FORMAT(COUNT(t.id)/ (SELECT COUNT(t.id) FROM crmdb.tickets t WHERE t.user22 = 'Planung/Bewirtschaftung' AND t.tnumber LIKE 'HL-%' AND (from_unixtime(t.createtime, '%u') = 46) AND (from_unixtime(t.createtime, '%Y')) = 2019)*100, 0) AS Anteil2 
FROM crmdb.tickets t 
WHERE t.user22 = 'Planung/Bewirtschaftung'
AND t.tnumber LIKE 'HL-%'
AND from_unixtime(t.createtime, '%u') = 46
AND from_unixtime(t.createtime, '%Y') = 2019
GROUP BY t.user29) d ON d.user29 =t.user29
GROUP BY t.user29
;

jetzt habe ich nur das Problem "WITH ROLLUP" richtig zu setzen, damit ich unter jeder Spalte eine Summe bekomme. Wie kann ich das erreichen?
 

Meniskusschaden

Top Contributor
Nur mal so als grundsätzliche Überlegung:

Du hattest hier ja schon häufiger ähnliche Anfragen. Es scheint immer um das Thema Reporting für dieselben Tabellen zu gehen. Die Abfragen werden teilweise recht umständlich, Performanceprobleme spielen eine Rolle und die fehlende Möglichkeit, die Datenbank anzupassen oder Indizes zu erstellen, schränkt dich zusätzlich ein.

Vielleicht solltest du in Erwägung ziehen, die Daten einfach in ein Data Warehouse zu überführen und das Reporting dort zu machen. Wahrscheinlich könntest du deine Probleme dadurch grundsätzlich lösen, anstatt immer wieder neu herum zu frickeln.
 

didi577

Bekanntes Mitglied
das ist sicher eine gute Alternative, da müsste ich mich aber auch erst noch einarbeiten

mir geht es hier aber auch um das erlernen des grundsätzlichen "Handwerks", da ich nicht regelmäßig daran arbeite fehlt mir die Routine
 

Meniskusschaden

Top Contributor
mir geht es hier aber auch um das erlernen des grundsätzlichen "Handwerks"
Dann wäre es vielleicht nicht schlecht, diesem Vorschlag aus einem deiner anderen Threads zu folgen:
Oder der TO bastelt schnell ein sqlFiddle aus seinen Tabellen. Dann wird es für uns auch viel leichter.
Wenn du dort ein aussagekräftiges Beispiel mit ein paar Testdaten aufbaust und hier verlinkst, steigerst du die Bereitschaft hier zu antworten erheblich.
 

mihe7

Top Contributor
SQL:
SELECT Bereiche, sum(AnzahlTag) AS AnzahlTag, sum(AnteilTag) AS AnteilTAg, sum(AnzahlWoche) AS AnzahlWoche, sum(AnteilWoche) AS AnteilWoche
FROM (
SELECT t.user29 AS Bereiche, (IFNULL(e.Anzahl1, 0)) AS AnzahlTag, (IFNULL(e.Anteil1, 0)) AS AnteilTag, (IFNULL(d.Anzahl2, 0)) AS AnzahlWoche, (IFNULL(d.Anteil2, 0)) AS AnteilWoche
FROM tickets t 
  LEFT JOIN (SELECT DISTINCT t.user29, COUNT(t.tnumber) AS Anzahl1, FORMAT(COUNT(t.tnumber)/ (SELECT COUNT(t.tnumber) FROM tickets t WHERE t.user22 = 'Planung' AND t.tnumber LIKE 'HL-%' AND createtime = '2019-11-14')*100, 0)AS Anteil1
    FROM tickets t 
    WHERE t.user22 = 'Planung' 
      AND t.tnumber LIKE 'HL-%' 
      AND createtime = '2019-11-14' 
    GROUP BY t.user29) e ON e.user29 = t.user29
  right JOIN (SELECT DISTINCT t.user29, COUNT(t.tnumber) AS Anzahl2, FORMAT(COUNT(t.tnumber)/ (SELECT COUNT(t.tnumber) FROM tickets t WHERE t.user22 = 'Planung' AND t.tnumber LIKE 'HL-%' AND WEEKOFYEAR(t.createtime) = 46 AND YEAR(t.createtime) = 2019)*100, 0) AS Anteil2 
    FROM tickets t 
    WHERE t.user22 = 'Planung'
    AND t.tnumber LIKE 'HL-%'
    AND WEEKOFYEAR(t.createtime) = 46
    AND YEAR(t.createtime) = 2019
    GROUP BY user29) d ON d.user29 = t.user29
GROUP BY t.user29
) x GROUP BY Bereiche WITH ROLLUP
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
J Datenbank abfragen Datenbankprogrammierung 6
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
M Sql Abfragen Datenbankprogrammierung 1
D MySQL Geburtsdatum per KW abfragen Datenbankprogrammierung 1
W Daten in Java intern abfragen Datenbankprogrammierung 1
Thallius MySQL Tabelle splitten aber wie eine abfragen? Datenbankprogrammierung 10
D geänderte SELECT Abfragen Datenbankprogrammierung 15
D foreignkey abfragen und speichern Datenbankprogrammierung 74
K Viele verschiedenen SQL Abfragen Datenbankprogrammierung 2
J SQLite ResultSet closed -- Wiederholende DB-Abfragen Datenbankprogrammierung 6
R JPA dynamisch auf NULL abfragen Datenbankprogrammierung 2
A MySQL Tabelle ID abfragen und Spalte ausgeben Datenbankprogrammierung 4
K HSQLDB Einzelne Tabellen abfragen? Datenbankprogrammierung 4
F myBatis und komplexe Abfragen Datenbankprogrammierung 3
M MySQL Spaltennamen abfragen Datenbankprogrammierung 2
B Abfragen fehlgeschlagen Datenbankprogrammierung 6
D MySQL Applet MYSQL Abfragen Sicherheit Datenbankprogrammierung 2
E Datenbank Abfragen in eine GUI schreiben Datenbankprogrammierung 8
I Tabelle mit "|" getrennten Werten -> einzelnen Wert davon abfragen Datenbankprogrammierung 15
N Daten aus Datenbank abfragen und anzeigen in der Praxis?? Datenbankprogrammierung 2
S MySQL Server Informationen abfragen Datenbankprogrammierung 6
turmaline [Hibernate] @OneToMany - Eine referenzierte Tabelle abfragen Datenbankprogrammierung 11
Burny91 SQLite ResultSetMetaData abfragen Datenbankprogrammierung 6
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
H Derby SQL-Abfragen in Datei abspeichern Datenbankprogrammierung 2
trash SQL, ganze Tabelle abfragen Datenbankprogrammierung 3
E MySQL 2 Fragen zur Syntax von SQL-Abfragen Datenbankprogrammierung 8
brainray Bei MySQL alle Datenbanken eines Servers abfragen Datenbankprogrammierung 3
N mehrere Abfragen nacheinander wie mit MS Access mit JAVA Datenbankprogrammierung 3
MQue größte id in einer Tabelle abfragen Datenbankprogrammierung 4
A Leere Zelle von einer DB abfragen Datenbankprogrammierung 3
S Abfragen auf Vorhanden Datenbankprogrammierung 23
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
G SQL Abfragen hardcoded im Quelltext? Datenbankprogrammierung 15
G Prolog abfragen mit Java Datenbankprogrammierung 3
M H2 DAtenbank in .sql datei schreiben/abfragen ? Datenbankprogrammierung 3
A Abfragen, wer zur Zeit angemeldet ist Datenbankprogrammierung 3
S Datentypen einer Tabelle Abfragen? Datenbankprogrammierung 2
G Rechte abfragen Datenbankprogrammierung 8
L MySQL : Funktionsweise von '%' in Abfragen Datenbankprogrammierung 2
G INSERT abfragen ob erfolgreich? Datenbankprogrammierung 5
B Eingefügter Datensatz erneut abfragen. Datenbankprogrammierung 10
E Datentyp numeric abfragen? Datenbankprogrammierung 2
P Daten aus 2 Tabellen mit java abfragen Datenbankprogrammierung 9
F die DN eines LDAP verzeichnisses abfragen Datenbankprogrammierung 2
M Abfragen auf ResultSets Datenbankprogrammierung 3
E Einzelne SQL Abfragen, oder alles zusammen? (veraendert!!!) Datenbankprogrammierung 11
A Viele Abfragen auf einmal: Performance Datenbankprogrammierung 2
Z Zeilen-Anzahl abfragen bei Datenbank Datenbankprogrammierung 4
W RsultSet auf null abfragen funktioniert nicht Datenbankprogrammierung 4
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
S MySQL Abfragen blockiern den Arbeitsspeicher Datenbankprogrammierung 6
G Anzahl der Datensaetze abfragen Datenbankprogrammierung 11
V Anzahl der Datensätze abfragen Datenbankprogrammierung 9
S Bereiche einer Datenbank abfragen Datenbankprogrammierung 3
N Mehrere Abfragen gleichzeitig - was passiert da? Datenbankprogrammierung 6
D Reihenfolge der Abfragen Datenbankprogrammierung 7
L mehrere Abfragen mit einem Statement!? Datenbankprogrammierung 5
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D MySQL Zusammenfassen von Records in ein Record(Merge) Datenbankprogrammierung 7
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
K zusammenfassen von zeilen Datenbankprogrammierung 2
O SQL: Zusammenfassen von Datensätzen Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben