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

Не е грешка в израза GROUP BY

Грешката казва всичко, не групирате по MEMBERS.MEMBER_ID и MEMBERS.MEMBER_NAME .

SELECT MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
     , COUNT(personal_training_sessions.session_id)
  FROM MEMBERS 
  JOIN personal_training_sessions
    ON personal_training_sessions.member_id = members.member_id
 GROUP BY MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME

Искате броя на личните сесии на член, така че трябва да групирате по информация за члена.

Основната (разбира се, може да стане много по-сложна) заявка GROUP BY, SELECT е:

SELECT <column 1>, <column n>
     , <aggregate function 1>, <aggregate function n>
  FROM <table_name>
 GROUP BY <column 1>, <column n>

Агрегирана функция е, както казва Кен Уайт, нещо като MIN() , MAX() , COUNT() и т.н. Вие ГРУПИРАТЕ ПО всички колоните, които не са обобщени.

Това ще работи по предназначение само ако вашите MEMBERS таблицата е уникална за MEMBER_ID , но въз основа на вашето запитване подозирам, че е така. За да изясня какво имам предвид, ако вашата таблица не е уникална на MEMBER_ID тогава не отчитате броя на сесиите на MEMBER_ID но броя на сесиите на MEMBER_ID и на MEMBER_NAME . Ако те са във връзка 1:1, това е на практика едно и също нещо, но ако можете да имате няколко MEMBER_NAME s на MEMBER_ID тогава не е.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да зацикля приемането на потребителски вход с pl/sql?

  2. промяна на формата на датата от char

  3. Създайте редактируем изглед на Oracle

  4. Нова грешка при пролетно зареждане 2.3.0.RELEASE:UnsatisfiedDependencyException за Oracle 12.2.0.1 jdbcdriver, но не и с mysql jdbcdriver

  5. java.sql.SQLException:невалидни аргументи в повикването