Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengapa Oracle mengatakan bukan ekspresi GROUP BY?

Ini terjadi pada Anda hanya karena MySQL merusak logika SQL.

Katakanlah kita memiliki tabel emp:

id ename dept
1  mark  10
2  John  10
3  Mary  10
4  Jane  20

dan kueri:

select dept, ename
from emp 
group by dept;

Anda akan mendapatkan apa? Anda harus mendapatkan dua baris, karena ada dua departemen, tetapi kueri meminta ename. Untuk 20 jelas tapi untuk 10 mesin harus kembali apa?

Itu harus mengembalikan kesalahan. Tidak dapat menebak apa yang harus diberikan. Oracle menembak kesalahan - kesalahan Anda, tetapi MySQL mendapatkan email (tidak dijamin yang mana). Itu menyesatkan dan mungkin melakukan bug.

Kueri yang benar adalah:

select dept, max(ename) --the latest, alaphabeticaly
from emp 
group by dept;

dan

--all enames and groups
select dept, ename 
from emp 
group by dept, ename;

Setelah Anda memperbaiki bagian ini, Anda harus menyelesaikan

COUNT(*) over() AS rowcount

bagian. Di oracle, AFAIK, Anda tidak dapat menggabungkan fungsi analitik dengan grup berdasarkan kueri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan sqlalchemy dburi dengan Oracle menggunakan External Password Store?

  2. Konversikan serangkaian nilai Angka dalam Teks di Oracle SQL Query

  3. Desain DB untuk menyimpan bidang khusus untuk tabel

  4. Oracle mendapatkan semua kejadian yang cocok dari kolom

  5. Bagaimana cara saya secara otomatis mengatur ulang nilai urutan ke 0 setiap tahun di Oracle 10g?