반응형
단일 그룹 그룹 함수가 아님
기본적으로 다음과 같이 보이는 테이블이 있습니다.
TBL_USER
user_id - number
user_name - varchar
TBL_STUFF
stuff_id - number
stuff_user_id - number
나는 그들이 가지고 있는 "물건"의 수를 포함한 모든 사용자 정보를 조회하고 싶습니다.나는 이런 시도를 하고 있었습니다.
select user_id, user_name, count(stuff_id)
from tbl_user
left outer join tbl_stuff on stuff_user_id = user_id
where user_id = 5;
"단일 그룹 함수가 아닙니다"라는 오류가 나타납니다.
제가 해야 할 다른 방법이 있을까요?
음, 당신은 그룹 함수를 놓치고 있습니다 ;-)
시도해 보기:
select user_id, user_name, count(stuff_id)
from tbl_user left outer join tbl_stuff on stuff_user_id = user_id
where user_id = 5
group by user_id, user_name;
마지막 줄은.group byOracle이 user_id 및 user_name 조합이 동일한 모든 행을 카운트하도록 지시하는 절입니다.
다음과 같이 할 수도 있습니다.
select
user_id,
user_name,
(
SELECT
COUNT(*)
FROM
tbl_stuff
WHERE
stuff_user_id = tbl_user.user_id
) AS StuffCount,
from
tbl_user
where
user_id = 5;
의견 중 하나는 에 존재하는 모든 필드를 포함하고 싶지 않다는 것입니다.GROUP BY절
@아리온은 동일한 값을 제공하는 상관-하위 쿼리 재인자를 게시했습니다.
다음 쿼리는 대신 표준(상관 없음) 하위 쿼리(인라인 뷰)를 사용합니다.이 인라인 뷰 구조를 사용하면 상관 관계가 있는 하위 쿼리 등가를 수행할 수 있기 때문입니다.하지만, 또한, 저는 그것들이 유지하기 더 쉽다고 생각하기 때문입니다.
WITH
stuff_count
AS
(
SELECT
stuff_user_id AS user_id,
COUNT(*) AS val
FROM
tbl_stuff
GROUP BY
stuff_user_id
)
SELECT
tbl_user.user_id,
tbl_user.user_name,
stuff_count.val
FROM
tbl_user
LEFT JOIN
stuff_count
ON stuff_count.user_id = tbl_user.user_id
WHERE
tbl_user.user_id = 5;
참고: 플랜이 생성되면 전체 테이블이 아닌 user_id 필요한 서브쿼리만 실행됩니다 ;)
언급URL : https://stackoverflow.com/questions/10210320/not-a-single-group-group-function
반응형
'programing' 카테고리의 다른 글
| C#에서 JSON을 XML로 변환하거나 XML을 JSON으로 변환하는 방법은? (0) | 2023.10.09 |
|---|---|
| applicationContext를 여러 파일로 분할하는 중 (0) | 2023.10.09 |
| jQuery에서 AJAX 요청이 성공했는지 확인하는 가장 좋은 방법 (0) | 2023.10.09 |
| "에서 발견된 예기치 않은 요소" 오류를 수정하려면 어떻게 해야 합니까? (0) | 2023.10.09 |
| Controller As 표기법을 사용하여 상위 속성에 액세스하는 방법 (0) | 2023.10.09 |