Oracle
 sql >> база данни >  >> RDS >> Oracle

Защо Oracle не казва израз GROUP BY?

Това ви се случва само защото MySQL нарушава логиката на SQL.

Да кажем, че имаме таблица emp:

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

и заявката:

select dept, ename
from emp 
group by dept;

ще получите какво? Трябва да получите два реда, защото има два отдела, но заявката изисква ename. За 20 е ясно но за 10 двигателя какво трябва да върне?

Трябва да върне грешка. Не мога да отгатна какво име да дам. Oracle издава грешка - вашата грешка, но MySQL получава име (не е гарантирано кое). Това е подвеждащо и може да доведе до грешки.

Правилните заявки биха били:

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

и

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

След като коригирате тази част, ще трябва да разрешите

COUNT(*) over() AS rowcount

част. В Oracle, AFAIK, не можете да смесвате аналитични функции с групиране по заявки.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oracle pl/sql DBMS_LOCK грешка

  2. Изпращайте имейл в Oracle с UTF-8 кодиране в темата

  3. Count(*) не работи правилно

  4. събира информация за dba_users в база данни на Oracle, когато е свързан като потребител

  5. Хибернация:как да извикам съхранена функция, връщаща varchar?