Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dlaczego Oracle nie mówi o wyrażeniu GROUP BY?

Dzieje się tak tylko dlatego, że MySQL łamie logikę SQL.

Powiedzmy, że mamy stół emp:

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

i zapytanie:

select dept, ename
from emp 
group by dept;

dostaniesz co? Powinieneś dostać dwie linie, ponieważ są dwa działy, ale zapytanie pyta o ename. Za 20 jest jasne, ale za 10 silnik powinien zwracać co?

Powinien zwrócić błąd. Nie mogę zgadnąć, jaką nazwę e-mail podać.Oracle zgłasza błąd — Twój błąd, ale MySQL otrzymuje nazwę e-mail (nie jest gwarantowana). To mylące i może prowadzić do błędów.

Prawidłowe zapytania to:

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

i

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

Po poprawieniu tej części musisz rozwiązać problem

COUNT(*) over() AS rowcount

część. W Oracle AFAIK nie można mieszać funkcji analitycznych z grupowaniem według zapytań.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dlaczego ten sql używał unii, wszystkie nie zwróciły żadnych danych?

  2. jak przekonwertować csv na tabelę w Oracle?

  3. Jak zaktualizować tabelę w Oracle?

  4. Podzapytanie Oracle w słowie kluczowym jest wolne na 12c

  5. Oracle — jak uzyskać rzeczywisty rozmiar konkretnego wiersza?