Announcement

Collapse
No announcement yet.

TimeStamp kürzen und Group By, Distinct?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    hi,

    vielen dank für deine hilfe!

    nur leider bekomme ich immer die meldung "ungültiger spaltenname".

    ich hab aber da jetzt, soweit meine kenntnisse das hergeben, auch keinen fehler finden können. und bei dir ging das ja auch...

    bye, Christian.

    edit: mir ist grade folgendes in den sinn gekommen: ich habe ja das java programm. da gibts ne klasse measurement, da sollen die ganzen daten reingeschrieben werden die aus der datenbank kommen. mit einem resultset wird die abfrage ausgeführt und dann werden die werte aus der entsprechenden spalte in der tabelle in diese variable übernommen. kann es sein, dass der nicht mehr aus der spalte "result_time" (wo die ganzen timestamps drin stehen) abfragen kann? oder dass die temp(-eratur) nicht mehr da ist? sollte ich da mal deine tabellenalias' eintragen?

    edit 2: gesagt, getan: der "ungültige spaltenname" hat an der sache mit der abfrage nach "result_time" gelegen. wenn ich die werte aus "ts" nehme gehts. jetzt muss ich bloß noch rausfinden warum der nur "-1" als temperatur liefert...

    edit 3: auch dieses problem ist geklärt. kleiner programmierfehler...
    Zuletzt editiert von Chrischaaan; 29.07.2008, 09:11.

    Comment


    • #17
      Hi,

      wie die Spaltennamen bei dir genau aussehen bzw. abgefragt werden kann ich nicht sagen.

      Führ das SQL doch einfach mal in Toad oder SQLDeveloper oder welches Datenbanktool du auch immer hast aus, dann siehst Du welche Spalten geliefert werden und wie sie heißen(temp,ts, sec_number).

      Wenn Du andere Spaltennamen verwenden willst musst sie, wie Du schon gesagt hast, einfach per Alias im SQL umbenennen.


      Dim
      Zitat Tom Kyte:
      I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

      Comment


      • #18
        hi,

        die spalte heißt bei mir schon "result_time". aber ich kann nur nach dem alias abfragen, bzw. den alias weglassen. aber nach "result_time" abfragen und nen alias verwenden geht halt nicht.

        vielen dank jedenfalls für die schnelle und freundliche hilfe!

        wenn ich noch fragen habe würde ich nochmal was posten...

        bye, Christian.

        Comment


        • #19
          habe da noch eine frage: wie kann ich jetzt machen, dass der zusätzlich noch (zu der sekundenweisen-abfrage) alle doppelten temperaturwerte rausschmeist bis eine änderung kommt?

          also nehmen wir an, sekunde 21,22 und 23 haben alle 605°, sekunde 24 hat dann 607. wie entferne ich dann die 21 und 22 und 23?
          Zuletzt editiert von Chrischaaan; 29.07.2008, 13:20.

          Comment


          • #20
            Einfach die bereits vorhandene Menge nochmal in ein Subselect packen und dann zusammen mit max gruppieren:
            Code:
            WITH sec_date AS(SELECT temp,TO_CHAR(result_time,'YYYY-MM-DD HH24:MI:SS') ts
                               FROM mts310_results_n
                              WHERE nodeid=26
                                AND result_time BETWEEN TO_TIMESTAMP ('2008-07-28 08:00:00.000000000',
                                                                      'YYYY-MM-DD HH24:MI:SS.FF3'
                                                                     )
                                AND                     TO_TIMESTAMP ('2008-07-28 20:03:00.000000000',
                                                                      'YYYY-MM-DD HH24:MI:SS.FF3'
                                                                     )
                           )
            SELECT b.temp,max(b.ts) 
              FROM(SELECT a.temp,
                          a.ts,
                          max(a.sec_number) sec_number
                     FROM (SELECT temp,ts,row_number() over (partition by ts order by temp) sec_number
                            FROM sec_date
                          )a
                   GROUP BY a.temp,a.ts
                 )b
            GROUP BY b.temp
            ORDER BY b.temp
            Dim
            Zitat Tom Kyte:
            I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

            Comment


            • #21
              hi,

              hattest du diese abfrage getestet? bei mir geht das nämlich nicht. der kommt mir wieder mit seinem "ungültigen spaltennamen"...
              ich hab auch schon viel ausprobiert, z.b. die sache von gestern mit meinem programm, aber das passt.

              Comment


              • #22
                Ja hab ich. Sie läuft. Die Spaltennamen musst Du so anpassen wie Du so brauchst, da hab ich keinen Einfluss drauf.
                Vergiebst eben einen Alias der dir die Spalte umbenennt.

                Dim
                Zitat Tom Kyte:
                I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

                Comment


                • #23
                  mein timestamp der in der variable hinterlegt wird kommt aus der spalte "ts".
                  das hab ich so festgelegt. das geht bei der ersten abfrage die du mir gegeben hast auch richtig gut (vielen dank nochmals!).

                  aber bei der zweiten abfrage macht der das nicht mehr sondern bringt mir "ungültiger spaltenname".

                  wird "ts" irgendwo eliminiert oder so?

                  Comment


                  • #24
                    wird "ts" irgendwo eliminiert oder so?
                    Ja sicher. Schau dir das oberste SQL mal an:

                    Code:
                    SELECT b.temp,max(b.ts)
                    Hier gibts keine Spalte mehr, die ts heißt. Wenn Du einen eigenen Namen vergeben möchtest musst Du, wie schon erwähnt, einen Spaltenalias vergeben:

                    Code:
                    SELECT b.temp,max(b.ts) ts
                    Damit vergibst Du den Spaltenalias ts (du kannst dir auch einen anderen namen aussuchen wenn Du magst).

                    Dim
                    Zitat Tom Kyte:
                    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

                    Comment


                    • #25
                      sorry, ich checks grade nicht.

                      bei der alten abfrage hast du doch auch nur 1 mal den alias "ts" vergeben, und zwar oben nach "TO_CHAR(result_time, 'YYYY-MM-DD HH24:MI:SS')".

                      so und jetzt in der neuen abfrage nehm ich das selbe ts her, um meine variablen zu füllen.

                      ich haba uch mal versucht, nen alias von max(b.ts) zum füllen der variable zu verwenden. aber das geht auch nicht.

                      Comment


                      • #26
                        Ich kann leider nicht so ganz nachvollziehen wo dein Problem liegt. Führ das SQL doch mal einfach so aus (ohne dein Programm) und schau ob es funktioniert.
                        Wie deine Spaltennamen dann heißen sollen/müssen damit du sie ansprechen kannst- keine Ahnung.
                        Alternativ kannst in java ja auch den Spaltenindex verwenden. Also 1 für die erste, 2 für die zweite Spalte usw.

                        Dim
                        Zitat Tom Kyte:
                        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

                        Comment


                        • #27
                          mit dem spaltenindex gehts...
                          ich weiß zwar nicht wieso das dann mit "result_time" nicht geht weil die spalten ganz sicher so heißt, aber gut...

                          der sortiert jetzt auch richtig ordentlich aus. sieht gut aus!

                          ich dake vielmals für die hilfe und deine geduld!

                          bye, Christian.

                          Comment

                          Working...
                          X