ich zwei Abfragen, die eine einzelne Spalte mit doppelter Genauigkeit Werte zurück:Abteilung in SQL Query Statement
(SELECT scale
FROM (SELECT title,
scale,
dense_rank() OVER (PARTITION BY title
ORDER BY scale ASC) AS r
FROM signatures) t
WHERE r = 1)
... und:
(SELECT scale
FROM (SELECT scale,
dense_rank() OVER (PARTITION BY title
ORDER BY scale ASC) AS r
FROM signatures) t
WHERE r = 2)
Ich versuche, die erste Abfrage SELECT (Q1) geteilt durch die zweite Abfrage (Q2). D.h., (Reihe 1 von Q1)/(Reihe 1 von Q2). Und fuhr den Rest der Reihen fort.
Ich habe versucht:
SELECT ((SELECT scale
FROM (SELECT title,
scale,
dense_rank() OVER (PARTITION BY title
ORDER BY scale ASC) AS r
FROM signatures) t
WHERE r = 1)
/
(SELECT scale
FROM (SELECT scale,
dense_rank() OVER (PARTITION BY title
ORDER BY scale ASC) AS r
FROM signatures) t
WHERE r = 2)
)
Aber habe kein Glück gehabt. Kann jemand einen Weg sehen, dies zu tun? Ich kann die zwei Abfragen separat senden, dann durchlaufen Sie eine Schleife und teilen Sie die Elemente, aber das funktioniert nicht für ein semi-großes Recordset.
Auch sollte es nicht wichtig sein, aber ich benutze PostgreSQL.
Sie erkennen, dass 'DENSE_RANK' den gleichen Wert zurückgibt, wenn Sie mit Bindungen arbeiten? Zum Beispiel könnten Sie drei Instanzen für den zweiten Platz gebunden haben, was zu Trauer in Ihrer Abteilung führt ... –
@OMG. Ok, aber wenn ich die Abfragen getrennt ausführe, erhalte ich korrekte Spaltenergebnisse. Ist es nicht möglich, diese beiden in einer einzigen Aussage zu teilen? – Brett
Kann ich eine lokale temporäre Tabelle definieren, um die Ergebnisspalten für jede Abfrage zu speichern, und diese dann multiplizieren? – Brett