PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apa sebenarnya yang dilakukan oleh/pernyataan data ini di SAS? Setara dengan PostgreSQL?

Pernyataan tersebut menggunakan apa yang disebut 'by group processing'. Sebelum langkah dapat dijalankan, data harus diurutkan berdasarkan btn wtn resp_ji .

first.resp_ji piece sedang memeriksa untuk melihat apakah ini pertama kalinya nilai resp_ji saat ini terlihat dalam kombinasi btn/wtn saat ini. Demikian juga last.resp_ji piece sedang memeriksa apakah ini terakhir kalinya ia akan melihat nilai resp_ji saat ini dalam kombinasi btn/wtn saat ini.

Menggabungkan semuanya menjadi satu pernyataan:

if not (first.resp_ji and last.resp_ji);

Mengatakan, jika nilai resp_ji saat ini terjadi beberapa kali untuk kombinasi btn/wtn saat ini, maka simpan catatannya, jika tidak, buang catatannya. Perilaku if pernyataan ketika digunakan seperti itu secara implisit menyimpan/membuang catatan.

Untuk melakukan hal yang setara dalam SQL, Anda dapat melakukan sesuatu seperti:

  1. Temukan semua catatan untuk dibuang.
  2. Buang catatan tersebut dari kumpulan data asli.

Jadi...

create table rows_to_discard as 
select btn, wtn, resp_ji, count(*) as freq
from mytable
group by btn, wtn, resp_ji
having count(*) = 1

create table want as 
select a.*
from mytable a
left join rows_to_discard b  on b.btn = a.btn
                            and b.wtn = a.wtn
                            and b.resp_ji = a.resp_ji
where b.btn is null

EDIT :Saya harus menyebutkan bahwa tidak ada padanan SQL sederhana. Itu mungkin dengan memberi nomor baris dalam subquery, dan kemudian membangun logika di atas itu, tetapi itu akan sangat buruk. Ini mungkin juga bergantung pada rasa spesifik dari SQL yang digunakan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jatuhkan peran dengan hak istimewa

  2. Dapatkan Hari dari Tanggal di PostgreSQL

  3. Bagaimana aplikasi Ruby on Rails saya dapat mengakses database tanpa kata sandi?

  4. Postgres:INSERT jika belum ada

  5. Cara Baru untuk Mempersonalisasi Pemantauan PostgreSQL Anda dengan Prometheus