Heim > Fragen und Antworten > Hauptteil
Ich habe eine Abfrage, die eine Tabelle mit doppelten Datensätzen aus einem größeren Datensatz generiert, und ich möchte diese Ausgabedaten weiter analysieren können.
Hier ist ein Beispiel dafür, was Sie verwenden können.
Ich möchte für jede Immobilie Fälle identifizieren können, in denen die älteste Bewertung der Immobilie unter 50 lag, die neueste Bewertung jedoch jetzt über 70 liegt.
Im folgenden Beispiel erfüllen nur Bewertungen, die sich auf Attribut 17 beziehen, diese Bedingung, sodass die Zeile mit dem Referenz-Jygh extrahiert wird.
Referenz | Attributadresse | Datum | Bewertung |
---|---|---|---|
Adev | Attribut 12 | 08.12.2022 | 70 |
Schmollen | Attribut 12 | 2022-12-16 | 90 |
mhef | Attribut 17 | 2023-01-02 | 25 |
jygh | Attribut 17 | 09.01.2023 | 70 |
Junge | Attribut 22 | 2022-10-05 | 85 |
qepl | Attribut 22 | 25.10.2022 | 28 |
Dabei handelt es sich um eine spezielle Analyse der Veränderung im Laufe der Zeit, daher reicht ein bloßer Max/Min-Vergleich der Bewertungen nicht aus.
BEARBEITEN: Ich habe das Datenbeispiel bearbeitet, um den Rückgang der Bewertungswerte zu zeigen, was nicht den Kriterien entspricht.
P粉1419251812023-09-14 07:27:06
只有在不考虑日期的情况下,此方法才有效:
select PROPERTYADDRESS from TABLE1 where RATING <= 50 and PROPERTYADDRESS in ( select PROPERTYADDRESS from TABLE1 where RATING >= 70 );
在这里查看:https://dbfiddle.uk/6yoRNP74
P粉0685109912023-09-14 00:56:13
这将考虑最旧和最新的费率:
SELECT mt.PROPERTYADDRESS FROM TABLE1 mt INNER JOIN ( SELECT PROPERTYADDRESS, MIN(Date) AS MinDate FROM TABLE1 GROUP BY PROPERTYADDRESS ) t ON mt.PROPERTYADDRESS = t.PROPERTYADDRESS AND mt.DATE = t.MinDate WHERE RATING <= 50 AND mt.PROPERTYADDRESS in ( SELECT mt.PROPERTYADDRESS FROM TABLE1 mt INNER JOIN ( SELECT PROPERTYADDRESS, MAX(Date) AS MaxDate FROM TABLE1 GROUP BY PROPERTYADDRESS ) t ON mt.PROPERTYADDRESS = t.PROPERTYADDRESS AND mt.DATE = t.MaxDate WHERE RATING >= 70 );
在这里检查:https://dbfiddle.uk/XzEIlvKc