suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Vergleichen Sie Werte in doppelten Tabellen

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粉811329034P粉811329034516 Tage vor664

Antworte allen(2)Ich werde antworten

  • P粉141925181

    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

    Antwort
    0
  • P粉068510991

    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

    Antwort
    0
  • StornierenAntwort