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

Liczenie liczby połączonych rzędów w lewym sprzężeniu

Co powiesz na coś takiego:

SELECT m.MESSAGEID, sum((case when mp.messageid is not null then 1 else 0 end)) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Funkcja COUNT() policzy każdy wiersz, nawet jeśli ma wartość null. Używając SUM() i CASE, możesz policzyć tylko wartości inne niż null.

EDYCJA:Prostsza wersja zaczerpnięta z górnego komentarza:

SELECT m.MESSAGEID, COUNT(mp.MESSAGEID) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać instrukcję tworzenia tabeli Oracle w SQL*Plus?

  2. Jak mogę wybrać z listy wartości w Oracle?

  3. Jak wyeksportować puste tabele w Oracle?

  4. Dlaczego Oracle SQL nie pozwala nam używać aliasów kolumn w klauzulach GROUP BY?

  5. Ustawienia bazy danych Oracle Oracle