[SQL] 경고 : NULL 값은 아쿠아 데이터 스튜디오에서 집계 또는 다른 SET 연산에 의해 제거
SQL경고 : NULL 값은 아쿠아 데이터 스튜디오에서 집계 또는 다른 SET 연산에 의해 제거
데이터가 null로, 경고 결과가 표시 될 때 표시가있을 때 나는 문제가있다. 어떻게이 문제를 해결하기 위해? 어떻게 0으로 테이블의 경우 데이터가 널 데이터를 변경할 수 없습니다?
이건 내 코드입니다 : -
SELECT DISTINCT c.username AS assigner_officer,
d.description AS ticketcategory,
(SELECT Count(closed)
FROM ticket
WHERE assigned_to = c.user_id
AND closed IS NOT NULL
GROUP BY assigned_to)closedcases,
(SELECT Count(closed)
FROM ticket
WHERE assigned_to = c.user_id
AND closed IS NULL
GROUP BY assigned_to)opencases
FROM ticket a
JOIN ticketlog b
ON a.ticketid = b.ticketid
JOIN access c
ON a.assigned_to = c.user_id
JOIN ticket_category d
ON a.cat_code = d.id
JOIN lookup_department e
ON a.department_code = e.code
그 결과는 다음과 같이 나타납니다 -
Warnings: --->
W (1): Warning: Null value is eliminated by an aggregate or other SET operation.
<---
assigner_officer ticketcategory closedcases opencases
------------------- ----------------- -------------- ------------
abdulhafiz Enquiry (null) 0
affan Enquiry 12 (null)
amirul Enquiry 1 (null)
azrul_fahmi Enquiry 45 0
Azwani Enquiry (null) 0
chai Enquiry 4 (null)
dalinawati Enquiry 1 0
Emmy Complaints (null) 0
Fadhlia Enquiry 38 0
fairulhalif Others 1 (null)
farikh Enquiry (null) 0
ismailh Enquiry 28 0
izzahanna Enquiry (null) 0
Kamsuzilawati Enquiry 1 (null)
해결법
-
==============================
1.당신은 대부분 UID를 통해 요약 COUNT를 사용하는 것입니다. 따라서
당신은 대부분 UID를 통해 요약 COUNT를 사용하는 것입니다. 따라서
COUNT ([UID])는 경고를 생성합니다 :
카운트 개체가 존재하지 않는 왼쪽 조인과 함께 사용되는 동안.
그런 다음 전체 결과의 수 (즉, 부모) 존재를 세는 것이 경우에 COUNT (*)를 사용하면 잘못된 결과를 렌더링합니다.
COUNT ([UID를])를 사용하여 계수하는 유효한 방법이며, 경고는 경고에 지나지 않는다. 당신에 관한 한, 당신은이 경우의 UID의 진정한 수를 얻을하려는 그러나 경우에 당신은 사용할 수 있습니다 :
SUM(CASE WHEN [uid] IS NULL THEN 0 ELSE 1 END) AS [new_count]
이 쿼리에 오버 헤드를 많이 추가 할 것입니다. (테스트 MSSQL 2008)
-
==============================
2.이 문제를 해결하는 한 가지 방법은 경고를 해제하는 것입니다.
이 문제를 해결하는 한 가지 방법은 경고를 해제하는 것입니다.
SET ANSI_WARNINGS OFF; GO
-
==============================
3.사용 ISNULL (필드, 0) 또한 골재로 사용할 수 있습니다 :
사용 ISNULL (필드, 0) 또한 골재로 사용할 수 있습니다 :
ISNULL(count(field), 0)
그러나, 당신은 (*) 계산 계수를 (필드)을 변경하는 것이 좋습니다
편집하다:
시험:
closedcases = ISNULL( (select count(closed) from ticket where assigned_to = c.user_id and closed is not null group by assigned_to), 0), opencases = ISNULL( (select count(closed) from ticket where assigned_to = c.user_id and closed is null group by assigned_to), 0),
-
==============================
4.당신은하지 외부 COUNT 함수의 ISNULL의 내부를 넣을 :
당신은하지 외부 COUNT 함수의 ISNULL의 내부를 넣을 :
하지 GOOD : ISNULL (COUNT (필드), 0)
GOOD : COUNT (ISNULL (필드, 0))
-
==============================
5.이 오류를 얻고 있었다; 난 그냥 카운트 절에서 사용 된 필드의 WHERE 절을했습니다. 이 문제를 해결했다. 참고 : 그 개수에서 제외로 널 (null) 값의 존재는, 보고서에 대한 임계 여부를 확인합니다.
이 오류를 얻고 있었다; 난 그냥 카운트 절에서 사용 된 필드의 WHERE 절을했습니다. 이 문제를 해결했다. 참고 : 그 개수에서 제외로 널 (null) 값의 존재는, 보고서에 대한 임계 여부를 확인합니다.
올드 쿼리 :
select city, Count(Emp_ID) as Emp_Count from Emp_DB group by city
새로운 쿼리 :
select city, Count(Emp_ID) as Emp_Count from Emp_DB where Emp_ID is not null group by city
-
==============================
6.에 null 값이 집계 함수 내부에 존재하는 경우에 당신은이 문제에 직면하게 될 것이다. 대신에 아래의 코드
에 null 값이 집계 함수 내부에 존재하는 경우에 당신은이 문제에 직면하게 될 것이다. 대신에 아래의 코드
SELECT Count(closed) FROM ticket WHERE assigned_to = c.user_id AND closed IS NULL
같은 사용
SELECT Count(ISNULL(closed, 0)) FROM ticket WHERE assigned_to = c.user_id AND closed IS NULL
from https://stackoverflow.com/questions/11384292/warning-null-value-is-eliminated-by-an-aggregate-or-other-set-operation-in-aqua by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 는 SQL Server의 알터 사용자 정의 유형 (0) | 2020.06.05 |
---|---|
[SQL] 없는 그룹에 의해 SQL에서 열을 선택합니다 (0) | 2020.06.05 |
[SQL] TSQL가 - A는 ... END 블록을 BEGIN의 방법 GO의 내부를 사용 하는가? (0) | 2020.06.05 |
[SQL] SQL에서 여러 테이블을 조인 (0) | 2020.06.04 |
[SQL] 빌 &는 SQL 주입 - UTF8 POC (0) | 2020.06.04 |