AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

count mit 0

Ein Thema von p80286 · begonnen am 6. Nov 2015 · letzter Beitrag vom 10. Nov 2015
Antwort Antwort
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#1

AW: count mit 0

  Alt 6. Nov 2015, 16:27
Jumpys Lösung sollte bereits funktionieren. Aus der Hüfte geschossen wäre folgende Variante auch möglich:

Code:
SELECT LagerGegenstand.Abteilung, LagerGegenstand.Gegenstand, count(*)
FROM
   (SELECT DISTINCT Abteilung, Gegenstand FROM tt) as LagerGegenstand LEFT JOIN tt ON (LagerGegenstand.Abteilung = tt.Abteilung AND LagerGegenstand.Gegenstand = tt.Gegenstand AND tt.zeit between(startdate,eddate))
GROUP BY LagerGegenstand.Abteilung, LagerGegenstand.Gegenstand;
//bzw. ohne das "as", ist ja Oracle
Jonas

Geändert von Aurelius ( 6. Nov 2015 um 16:30 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: count mit 0

  Alt 6. Nov 2015, 18:42
Solche "Spielereien" Oracle ich in der Regel so in der Art:
SQL-Code:
select Abteilung, Gegenstand, Sum(Anzahl) as Anzahl from (
  select Abteilung, Gegenstand, count(key) as Anzahl
  from tt
  where zeit between(startdate,eddate)
  group by Abteilung, Gegenstand
  union all
  select disitinct Abteilung, Gegenstand, 0 as Anzahl
  from tt
)
group by Abteilung, Gegenstand
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

AW: count mit 0

  Alt 6. Nov 2015, 19:25
Du müsstest eine Tabelle aller Abteilungen und Gegenstände haben (wenn du auch 0-Werte für die Gegenstände haben willst).

Bleiben wir mal bei Abteilungen. Dann machst Du ein LEFT JOIN deiner Abteilungen auf deine Auswertung und bekommst so automatisch alle Abteilungen und -falls Daten vorhanden sind- eben auch Werte. Wenn nicht, dann steht da NULL, aber das kannst du dann ja auf 0 ändern.
So z.B.:
SQL-Code:
select A.Abteilung,
       S.Gegenstand,
       Count(S.Key)
  from AlleAbteilungen A
       left join tt s on A.Abteilung = s.Abteilung
 where zeit between(startdate,eddate)
 group by s.Abteilung,s.Gegenstand
Jumpy's Lösung ist auch cool, würde aber etwas länger dauern, wenn in TT sehr viele Zeilen sind und kein Index auf der Abteilung/Gegenstand ist. Dann muss er ja vorher die gante Tabelle abgrasen, um alle Abteilungen zu bekommen. Außerdem (mecker mecker) funktioniert das nicht, wenn eine Abteilung X, die angezeigt werden soll, bisher noch keine Werte hat.

Geändert von Dejan Vu ( 6. Nov 2015 um 19:27 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: count mit 0

  Alt 6. Nov 2015, 23:59
und noch eins:
Code:
select Abteilung,
       Gegenstand,
       sum(case
             when Zeit between :startdate and :enddate
             then 1             
             else 0
           end)
  from tt
 group by Abteilung, Gegenstand
Macht garantiert einen full scan (aber nicht mehr), eignet sich wohl am ehesten, wenn eh keine Indizes auf den abgefragten Feldern sind und die anderen Vorschläge auch bereits einen Fullscan machen.
Aber ich schätze, wenn es hier um Abteilungen geht, sind es eh keine Riesenmengen und Performance ist bedeutungslos.
Gruß, Jo
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: count mit 0

  Alt 7. Nov 2015, 08:26
Erstens macht meine Lösung keinen full scan und zweitens würde auch hier eine Abteilung erst dann in der Statistik auftauchen, wenn Daten vorhanden sind.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: count mit 0

  Alt 7. Nov 2015, 14:18
Erstens macht meine Lösung keinen full scan und zweitens würde auch hier eine Abteilung erst dann in der Statistik auftauchen, wenn Daten vorhanden sind.
Noch kein Kaffee gehabt oder schon zuviel?
Ich habe mich überhaupt nicht zu Deiner Lösung geäußert. Falls Du Dich zu meiner geäußert hast, würde ich sagen, das musst Du noch mal präziser formulieren, wir anfangen zu streiten, äh ich meinte bevor ich darauf eingehe.
Gruß, Jo
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: count mit 0

  Alt 7. Nov 2015, 20:26
Ich wollte halt mitreden.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz