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

Gabungan ATAU kueri SQL (kueri #1 dengan WITH) dan (kueri #2) dengan COUNT() pengecualian

Dua masalah:

  1. Sama seperti pesan kesalahan yang memberitahu Anda, geom perlu dibungkus dengan fungsi agregat jika tidak terdaftar di GROUP BY . Anda bisa menggunakan min() ...
  2. Logika Anda terbalik. Harus COUNT(*) = 1 OR ..

Tapi ini bisa diselesaikan dengan lebih elegan dengan anti-semi-join menggunakan NOT EXISTS :

SELECT s.name, s.admin, st_area(geom)
FROM   vector.states s
WHERE  st_area(s.geom) > 0.01           -- state big enough ...
   OR NOT EXISTS (                      -- ... or there are no other counties
         SELECT 1 FROM vector.states s2
         WHERE  s2.admin = s.admin
         AND    s2.pk_column <> s.pk_column  -- exclude self-join
         )
ORDER BY s.admin;

Ganti pk_column dengan kolom kunci utama Anda yang sebenarnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres Kiri Gabung dengan kondisi dimana

  2. Apa urutan catatan dalam tabel dengan kunci primer komposit?

  3. Bagaimana cara menambahkan kolom khusus dengan nilai default dalam kueri sql?

  4. Postgres - Apakah ini cara yang tepat untuk membuat indeks parsial pada kolom boolean?

  5. Bagaimana Anda menemukan ukuran disk dari tabel Postgres / PostgreSQL dan indeksnya?