Tabellen Query sortiert nicht richtig
#1
Hey, ich bin seit neusten in Berührung mit sogenannter "Query"s gekommen. Leider kann ich nur "Google Tabellen" nutzen, wegen sogenannter "Datasheet"s.

Durch einen meiner Bekannten kam ich jedenfalls zu den "Query"s, aber zu diesem Anliegen fiel ihm keine Lösung ein, daher mag ich mich hieran wenden, in Hoffnung das wer eine Lösung weiß.

Letztendlich macht es das richtige, jedoch fehlt, dass von den Werten die raus gegriffen oder auch abgefragt werden, also am Ende angezeigt werden, wird am Ende nicht von oben nach unten der höchste Wert angezeigt. Oder besser erwähnt, manchmal tut es das und an anderer Stelle wieder nicht.

Die "Query"s greifen aus einem "Datasheet" ab, wo ich nichts darin verändern kann. Also erst ab "Query" ist mir eine Bearbeitung möglich. Und letztendlich ist es ein Abgriff eines "Query" aus einem anderem "Query" über verschiedene Tabellen Seiten. Jedoch sind alle 3 ("Datasheet" und 2 "Query") in der selben "Datei". Es geht jeweils um die letzte "Query", also sozusagen der letzte Schritt der Anzeige.

Die 2 Formeln um die es derzeit geht sind folgende:  

=QUERY(Seite!$A$2:$K;"order by E desc limit 4";)

=QUERY(Seite!$A:$K;"select A,B,C,D,E,F,G,H,I,J,K where H contains 'gesuchtes Wort' order by C desc limit 2";0)

Dadurch kommen Werte sortiert raus wie:
8
31
3
25

Es kommt mir so vor, dass statt kompletter Zahl, erst die erste Ziffer geprüft wird. Also statt 30 ist es 3 und 0. Und somit als 3 sortiert und unter den 3er dann als weitere Sortierung dann die 0.

Gern hätte ich es mit "max" versucht, aber ich kenne mich dann doch zu schlecht mit der Funktion aus. Ich hoffe dass wer hier sich damit ausreichend auskennt und dies gelöst bekommt.
Antworten Top
#2
Moin,

versuchs mal mit
Code:
... ORDER BY CAST(C AS INT) DESC ...

so funktioniert es bei den meisten SQL-Dialekten. Gegebenenfalls hilft auch CONVERT.

Viele Grüße
derHöpp
Antworten Top
#3
Hey, danke erstmal.
Bei beidem bekomm ich das Ergebnis #Value!
Also egal ob ich =QUERY(Seite!$A$2:$K;"order by convert(E as int) desc limit 4";)
                   oder  =QUERY(Seite!$A$2:$K;"order by cast(E as int) desc limit 4";)
eingebe.
Entweder hab ich was nicht richtig gemacht oder es ist leider nicht die Lösung.

Kleine Ergänzung.
Diese Formel scheint doch richtig  zu funktionieren:
=QUERY(Seite!$A:$K;"select A,B,C,D,E,F,G,H,I,J,K where H contains 'gesuchtes Wort' order by C desc limit 2";0)

Es geht also nur um folgende, wo es nicht richtig sortiert wird:

=QUERY(Seite!$A$2:$K;"order by E desc limit 4";)
Antworten Top
#4
Moin,

ich habe das Problem noch mal nachgestellt. Tatsächlich greift die Query-Funkktion auf die "Google Visualization API Query Language" und damit auf einen eigenen SQL-Dialekt zurück. Diese Sprache kennt leider kein Casting und erlaubt es auch nicht, Texte durch einfache Multiplikation in Werte umzuwandeln. Dir bleibt also nur, schon in der Datenquelle dafür zu sorgen, dass die Daten als Zahl und nicht als Text gespeichert sind. Das geht natürlich auch mit einer Hilfsspalte, die aus "=WERT(E2)" oder "=--E2" besteht. Angenommen, diese Hilfsspalte steht dann in Spalte L, könnte das ganze etwa so aussehen:

Code:
=QUERY(Seite!$A$2:$L$50;"SELECT A, B, C, D, E, F, G, H, I, J, K order by L desc limit 4")

Ich hoffe, das hilft dir weiter!
Viele Grüße
derHöpp
Antworten Top
#5
Danke für alle die sich Mühe oder zumindest sich etwas Gedanken gemacht haben. Es wurde mittels Zwischenschritt gelöst, weil wo es keine Werte gab, ist durch den "Datasheet" 3 Striche in einer Zelle mitgeliefert worden und das hat Schwierigkeiten bereitet. Im Zwischenschritt wird die Liste der Zahlen mit folgender Formel umgewandelt, dann sind überall Zahlen und funktioniert wieder richtig:
=WENN(ISTZAHL(Seite!F2);Seite!F2;0)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste