[SQL allgemein] Hilfe Count mit sum verknüpfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [SQL allgemein] Hilfe Count mit sum verknüpfen

    Hallo,
    brauche dringend Hilfe. Das ganze Wochende versucht aber leider ohne erfolg. Also folgendes:

    Ich habe folgende Tabellen: AngebotStart ,AngebotEnde in meiner Datenbank.

    So jetzt will ich zwischen 2 daten alle Datensätze innerhalb dieses Zeitraums erkennen und mit Count() zählen lassen.Dabei sollen sie noch Gruppiert werden durch AngebotStart
    Dann will ich die Summe von dem count für jeden tag bilden! Aber das klappt nicht!
    Hier meine Abfrage:

    select AngebotEnde,AngebotStart,AngebotStart,COUNT(AngebotStart) as number, FROM data
    where ((AngebotStart >= '2002-08-21') OR (AngebotEnde
    >='2002-08-21')) AND AngebotStart <= '2002-08-25'
    Group by AngebotStart order by AngebotStart;

    soweit funktioniert es auch. Wie könnte ich jetzt dabei noch die Summe von Count(AngebotStart) bilden und damit feststellen an welchem Datum wieviel angebote wirklich existieren.

    Also wenn das Datum in AngebotEnde vorbei ist sollte er es auch wieder abziehen.
    Zum besseren Verständnis

    AngebotStart 2004-01-10; AngebotEnde 2004-01-20 Count=3
    AngebotStart 2004-01-11; Angebotende 2004-01-18 Count=5

    So, also vom 2004-01-11 bis 2004-01-18 wäre die Summe dann 8.
    Aber den Tag vorher und danach wäre die Summe nur 3.

    BITTE BITTE UM HILFE ICH DREh NOCH TOTAL durch...




    Vielen Dank im Voraus

    Marauder

  • #2
    du willst die Summe aus Datensätzen mit coun oder?

    Schon mal:

    Code:
    select AngebotEnde,AngebotStart,AngebotStart,sum(COUNT(AngebotStart)) as number, FROM data 
    where ((AngebotStart >= '2002-08-21') OR (AngebotEnde
    >='2002-08-21')) AND AngebotStart <= '2002-08-25'
    Group by AngebotStart order by AngebotStart;
    versucht?
    [color=blue]MfG Payne_of_Death[/color]

    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
    [color=red]Merke:[/color]
    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

    Murphy`s Importanst LAWS
    Jede Lösung bringt nur neue Probleme
    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

    Kommentar


    • #3
      Nein das geht leider nicht!

      Sagt invalid use of group function.


      gruss

      Kommentar


      • #4
        und wie sieht deine Abfrage jetzt aus?

        Kommentar


        • #5
          Hi,

          irgendwie muss man das mit eine subquerie lösen, raff nur nicht ganz wie das geht...

          also meine Abfrage sieht folgendermaßen aus:

          select AngebotEnde,AngebotStart,AngebotStart,COUNT(AngebotStart) as number, FROM data
          where ((AngebotStart >= '2002-08-21') OR (AngebotEnde
          >='2002-08-21')) AND AngebotStart <= '2002-08-25'
          Group by AngebotStart order by AngebotStart;

          das war sie eigentlich jetzt will ich noch die summe bilden. müsste irgendwie so gehen..

          select AngebotEnde,AngebotStart,AngebotStart,COUNT(AngebotStart) as number FROM data, select SUM(number) as Summe
          where ((AngebotStart >= '2002-08-21') OR (AngebotEnde
          >='2002-08-21')) AND AngebotStart <= '2002-08-25'
          Group by AngebotStart order by AngebotStart;

          kann mir noch jemand helfen?

          danke!!!11

          Kommentar


          • #6
            Versuch doch erstmal den Sinn hinter Deiner Abfrage zu erklären ... den scheint es für mich hier erstmal nicht zu geben ... !

            Payne_of_Death's Vorschlag ( sum(COUNT(AngebotStart)) ) würde ... wenn man darüber nachdenkt und sich vor Augen führt was GROUP BY macht nichts anderes ergeben als COUNT(AngebotStart) ...
            Zuletzt geändert von goth; 26.04.2004, 15:10.
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              also ok ich will erstmal mit COUNT(*) die Anzahl der berechnen. Also wieviele Datensätze an einem datum enstanden sind.
              deshalb mach ich COUNT(*) verbunden mit Group by AngebotStart.

              so jetzt will ich aber noch die summe von den enstandenen COUNT berechnen.

              Kommentar


              • #8
                Also ... entweder im Script summieren ... oder mit 'nem neuen Statement ein extra COUNT(*) abfragen ...

                Sowohl COUNT() als auch SUM() sind Aggregat-Funktionen die auf die via GROUP BY aggregierten Datensätze wirken ...
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Wie würde meine Abfrage dann aussehen, also ich habe ja dann ein feld number was aus count() erstellt wird....
                  und dann will ich pro datensatz noch ein feld summe (mit sum()) erstellt welches mir die counts aufaddiert...

                  Kommentar


                  • #10
                    nachdem du ja SQL allgemein als betreff hast: such dir ne datenbank, die CUBE bzw. ROLLUP unterstützt

                    eventuell geht's auch mit nem UNION, wobei das imho der sprichwörtliche krückstock wäre, der von hinten durch die brust ins auge usw. ...
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Original geschrieben von goth
                      Sowohl COUNT() als auch SUM() sind Aggregat-Funktionen die auf die via GROUP BY aggregierten Datensätze wirken ...
                      hmm hab group by übersehen oho...
                      [color=blue]MfG Payne_of_Death[/color]

                      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                      [color=red]Merke:[/color]
                      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                      Murphy`s Importanst LAWS
                      Jede Lösung bringt nur neue Probleme
                      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                      Kommentar


                      • #12
                        wie??? das versteh ich nicht????

                        Kommentar


                        • #13
                          dachte es müsste dann irgendwie so aussehen aber auch das funktioniert nicht!!!!!!



                          select sum(number) from (COUNT(*) as number,
                          AngebotEnde, AngebotStart FROM data) as data
                          where (BLUBB)
                          Group by AngebotStart order by AngebotEnde;

                          Kommentar


                          • #14
                            hab ein anderen ansatz, könnte ich nicht für jedes datum in einem bereich sagen wir 2004-10-05 bis 2004-10-20 alle tage abklappern lassen auch wenn sie nicht in meiner datenbank vorhanden sind und mir zurückgeben lassen wieviel einträge an jedem tag waren?

                            gibts in sql nicht sowas wie for each day tuhe das...
                            ???
                            HELP!!1

                            Kommentar


                            • #15
                              [SQL allgemein] Datumintervall abklappern lassen?

                              Hallo Leute,

                              kannich nicht für jedes datum in einem bereich sagen wir 2004-10-05 bis 2004-10-20 alle tage abklappern lassen auch wenn sie nicht in meiner datenbank vorhanden sind und mir zurückgeben lassen wieviel einträge an jedem tag waren?

                              Also meine Datenbank sieht folgendermaßen aus:

                              Tabellen: AngebotStart(Datum), AngebotEnde(Datum), Artikelnummer

                              wie würde ich das jetzt machen..? es soll auch 0 zurückkommen wenn an einem tag kein aktives angebot, also wenn das datum nicht zwischen AngebotStart und AngebotEnde lag.


                              Vielen Dank

                              Hoffe auf eure Unterstützung



                              Kommentar

                              Lädt...
                              X