2017-10-05 2 views
1

모든 호텔의 호텔 당 객실 수를 계산하려고합니다. 나는 3 개의 테이블을 가지고 있는데 하나는 Hotel ID와 호텔 정보가 있고 다른 하나는 호텔이있는 주 (Hotel_ID 공유)이고 세 번째 테이블은 Hotel ID 당 객실 정보를 가지고 있습니다. 그러나이 문장에서 "COUNT"와 "GROUP BY"작업을 얻을 수 있습니다. 나는 그것이 문제없이 보여줍니다 절 "BY GROUP"는 "COUNT"를없이하려고하면 나는 오라클 SQLDeveloper그룹을 사용할 수 없습니다. ORA-00979 : GROUP BY가 아님

SELECT UPPER(A.HOTEL_NAME) "HOTEL NAME", 
     B.STATE AS STATE, 
     COUNT(C.ROOM_NUMBER) 

FROM HOTEL A 
    INNER JOIN STATE B ON B.ID_STATE = A.ID_STATE 
    INNER JOIN ROOM C ON C.ID_HOTEL = A.ID_HOTEL 

GROUP BY A.ID_HOTEL 
ORDER BY A.HOTEL_NAME ASC; 

을 사용하고이 호텔은 그것이 상태 첫 번째 열에과 2에서 호텔 이름 .

호텔 ID별로 그룹화 된 호텔 당 객실 수 (3 번째 열)를 알 수없는 이유는 누구나 아는 사람입니까?

SAMPLE DATA: 
HOTEL TABLE     ROOM TABLE    STATE TABLE 
========================== ======================= ====================== 
ID_HOTEL | HOTEL_NAME  ID_HOTEL | ROOM_NUMBER ID_HOTEL | STATE 
40  |STARDUST HOTEL  40  |101   40  |CALIFORNIA 
50  |GREENTREE HOTEL 50  |101   50  |ARIZONA 

나는 이런 식으로 뭔가를 기대 해요 :

RESULTING VIEW: 
HOTEL_NAME  |STATE  |ROOM_COUNT 
STARDUST HOTEL |CALIFORNIA |1 
GREENTREE HOTEL|ARIZONA  |1 

사전에 감사!

답변

1

GROUP BY 표현에 열이 없습니다.

SELECT 
    UPPER(A.HOTEL_NAME) "HOTEL NAME", 
    B.STATE AS STATE, 
    COUNT(C.ROOM_NUMBER) 
FROM HOTEL A 
INNER JOIN STATE B ON B.ID_STATE = A.ID_STATE 
INNER JOIN ROOM C ON C.ID_HOTEL = A.ID_HOTEL 
GROUP BY A.ID_HOTEL, A.HOTEL_NAME, B.STATE 
ORDER BY A.HOTEL_NAME ASC; 

공지 사항 : 그래서 나는이 (플러스 등 카디널리티가 정확한지 확신하지 세트 샘플 데이터를 제공하지 않았다)를 실행하지만 시도 할 수없는있어 편리하여 SQL 환경 없어 절의 두 개의 비 집계 열을 GROUP BY에 추가했습니다.

편집

체크 아웃 This SQL fiddle - 나는 당신의 계획 등 그것은 약간의 수정과 나를 위해 일하고을 잘못 이해 한 경우 알려주세요.

+0

빠른 답변 감사드립니다. 나는 왜 두 개의 비 집계 열을 추가했는지 이해하고 있지만 여전히 같은 오류가 발생하는 것을 알고 있습니다. (.2 초 샘플 데이터를 업로드하십시오.) – Rycerzfrost

+0

걱정하지 마세요! 내 편집에서 피들을 확인하고 내게 그것이 당신에게 효과가 있는지, 아니면 내가 당신의 질문에 대해 오해했는지 알 수 있습니다. –

+0

지금 고맙습니다 !! – Rycerzfrost

관련 문제