Rumah > Soal Jawab > teks badan
Saya mempunyai pertanyaan yang menjana jadual rekod pendua daripada set data yang lebih besar, dan saya ingin dapat melakukan analisis lanjut pada data output ini.
Berikut ialah contoh perkara yang boleh anda gunakan.
Saya ingin dapat mengenal pasti, untuk setiap hartanah, keadaan di mana rating tertua hartanah itu berada di bawah 50 tetapi rating terkini kini lebih tinggi daripada 70.
Dalam contoh di bawah, hanya rating yang berkaitan dengan atribut 17 memenuhi syarat ini, jadi baris yang mengandungi Rujukan jygh akan diekstrak.
Rujukan | Alamat atribut | Tarikh | Penilaian |
---|---|---|---|
Adev | Atribut 12 | 2022-12-08 | 70 |
Pout | Atribut 12 | 2022-12-16 | 90 |
mhef | Atribut 17 | 2023-01-02 | 25 |
jygh | Atribut 17 | 2023-01-09 | 70 |
budak | Atribut 22 | 2022-10-05 | 85 |
qepl | Atribut 22 | 2022-10-25 | 28 |
Ini ialah analisis khusus tentang perubahan dari semasa ke semasa, jadi hanya perbandingan maks/min penilaian tidak mencukupi.
Edit: Saya mengedit contoh data untuk menunjukkan penurunan nilai rating, yang tidak memenuhi kriteria.
P粉1419251812023-09-14 07:27:06
Kaedah ini hanya berfungsi jika tarikh tidak diambil kira:
select PROPERTYADDRESS from TABLE1 where RATING <= 50 and PROPERTYADDRESS in ( select PROPERTYADDRESS from TABLE1 where RATING >= 70 );
Lihat di sini: https://dbfiddle.uk/6yoRNP74
P粉0685109912023-09-14 00:56:13
Ini akan mempertimbangkan kadar tertua dan terbaharu:
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 );
Semak di sini: https://dbfiddle.uk/XzEIlvKc