열에 대한 이유가 집계 함수 또는 GROUP BY 절에 포함되어 있지 않으므로 선택 목록에 유효하지 않습니다.
오류가 발생했습니다.
칼럼 '직원'EmpID'는 집계 함수 또는 GROUP BY 절에 포함되어 있지 않으므로 선택 목록에 유효하지 않습니다.
select loc.LocationID, emp.EmpID
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
이 상황은 빌 카윈이 제시한 답변에 들어맞는다.
위의 수정, ExactaBox의 답변에 적합 -
select loc.LocationID, count(emp.EmpID) -- not count(*), don't want to count nulls
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
첫 번째 질문 -
SQL 쿼리의 경우 -
select *
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by (loc.LocationID)
왜 이런 오류가 발생하는지 모르겠어요.제가 원하는 것은 테이블에 합류한 후 특정 장소에 있는 모든 직원을 한 그룹으로 묶는 것입니다.
제 질문에 대한 부분적인 설명이 있을 것 같습니다.괜찮은지 말해줘-
같은 장소에서 일하는 모든 종업원을 그룹화하려면 먼저 그 장소를 언급해야 합니다.아이디
그러면 옆에 있는 사원 ID는 일일이 언급할 수 없습니다.그 대신에, 그 로케이션의 종업원의 총수를 언급하고 있습니다.즉, 그 로케이션의 종업원을 SUM()해야 합니다.왜 우리가 그것을 후자의 방법으로 하는지 나는 잘 모르겠다.즉, 에러의 「어느 집약 함수에도 포함되어 있지 않다」라고 하는 부분이 설명되고 있습니다.
오류의 절 부분에 대한 설명은 무엇입니까?
다음 표가 있다고 가정해 봅시다.T:
a b
--------
1 abc
1 def
1 ghi
2 jkl
2 mno
2 pqr
그리고 다음과 같은 질문을 합니다.
SELECT a, b
FROM T
GROUP BY a
출력에는 2개의 행, 즉1개의 행이 있어야 합니다.a=1두 번째 줄에는a=2.
그러나 이 두 행 각각에 b의 값은 무엇을 나타내야 할까요?각 케이스에는 3가지 가능성이 있으며 쿼리에서는 각 그룹의 b에 대해 어떤 값을 선택해야 하는지 명확하게 알 수 있는 것은 없습니다.애매해요.
이것은 GROUP BY 쿼리를 실행할 때 정의되지 않은 결과를 얻을 수 없도록 하는 단일 값 규칙을 나타냅니다.또한 그룹화 기준의 일부도 집계 함수(SUM, MIN, MAX 등)에 표시되지 않는 열을 선택 목록에 포함합니다.
수정 방법은 다음과 같습니다.
SELECT a, MAX(b) AS x
FROM T
GROUP BY a
이제 다음과 같은 결과를 원하는 것이 분명합니다.
a x
--------
1 ghi
2 pqr
당신의 쿼리는 다음에서 동작합니다.MYSQL「」를 .ONLY_FULL_GROUP_BY서버 모드(디폴트로는 이 모드)입니다.단, 이 경우 다른 RDBMS를 사용하고 있습니다.따라서 쿼리를 작동시키려면 모든 비집약 열을 에 추가합니다.GROUP BY:
SELECT col1, col2, SUM(col3) totalSUM
FROM tableName
GROUP BY col1, col2
는 Non-Aggregated columns와 같은 된 함수에 합니다.SUM,MAX,COUNT개요
이 은, 「」를 하는 입니다.GROUP BY에서는 '어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어느 쪽으로/어진다' 되어 있습니다.아, 아, 아, 아, 아, 아, 아, 아, 아, 아.SELECT다른 열은 결과 테이블에 나타나지 않으므로 그룹화 기준 열만 "선택"하고 해당 열에서 집계 함수를 사용할 수 있습니다.
"제가 원하는 것은 테이블에 합류한 후 특정 장소에 있는 모든 직원을 한 그룹으로 묶는 것입니다."
SQL 스테이트먼트의 출력에 사내의 모든 종업원이 기재되어 있는 것처럼 들립니다만, 우선 애너하임 오피스, 버팔로 오피스, 클리블랜드 오피스(A, B, C)의 각 사원이 기재되어 있는 것을 알 수 없습니다.
GROUP BY로 하다한 건 ★★★★★★★★★★★★★★★★★뿐입니다.ORDER BY loc.LocationID
언급URL : https://stackoverflow.com/questions/13999817/reason-for-column-is-invalid-in-the-select-list-because-it-is-not-contained-in-e
'programing' 카테고리의 다른 글
| C# / WPF에서 애니메이션을 중지하는 방법 (0) | 2023.04.20 |
|---|---|
| Kotlin 목록과 배열 유형의 차이 (0) | 2023.04.20 |
| Bash에서 여러 줄 문자열을 출력하려면 어떻게 해야 합니까? (0) | 2023.04.20 |
| 상호 또는 순환(순환) 가져오기를 사용하면 어떻게 됩니까? (0) | 2023.04.20 |
| 서버측 캐시를 사용하지 않고 cURL을 호출하려면 어떻게 해야 합니까? (0) | 2023.04.20 |