MySQL/MariaDB에서 롤업 null로 그룹을 식별하는 방법은?
수퍼 애그리게이트 행의 모든 값의 집합을 나타내는 널과 정규 행의 널을 구별하려면 어떻게 해야 합니까?
예를 들어, 오라클에서는 그룹핑 기능을 사용할 수 있습니다.
MariaDB에서 나는 다음을 사용하려고 했습니다.
if(<some_column> is null and count(1)>1,1,0)
하지만 모든 경우에 효과가 있는 것은 아닙니다.
예를 들어 tab_a table:
create table tab_a (col1 integer, col2 integer);
insert into tab_a values (5,1), (10,2), (15,null);
다음 쿼리에서 그룹화 null을 올바르게 결정했습니다.
select sum(col1), col2,
if(col2 is null and count(1)>1,'grouping null','not grouping null'),
count(1) from tab_a group by col2 with rollup
결과:
'15', NULL, 'not grouping null', '1'
'5', '1', 'not grouping null', '1'
'10', '2', 'not grouping null', '1'
'30', NULL, 'grouping null', '3'
그러나 이 쿼리는 그룹화 null을 식별하지 못합니다.
select sum(col1), round(col2),
if(round(col2) is null and count(1)>1,'grouping null','not grouping null'),
count(1) from tab_a group by round(col2) with rollup
결과:
'15', NULL, 'not grouping null', '1'
'5', '1', 'not grouping null', '1'
'10', '2', 'not grouping null', '1'
'30', NULL, 'not grouping null', '3'
두 번째 쿼리가 작동하지 않는 이유는 무엇이며 모든 경우에 작동하는 솔루션은 무엇입니까?
업데이트: 또한 COALESCE를 사용하려고 했지만 단순 NULL만 확인하는 데 도움이 되었지만 GROUP BY ROLUP NULL이 있는 열을 변경해야 합니다.
언급URL : https://stackoverflow.com/questions/47467323/how-to-identify-group-by-with-rollup-null-in-mysql-mariadb
'programing' 카테고리의 다른 글
체크아웃 없이 다른 분기를 현재 상태로 재설정 (0) | 2023.09.07 |
---|---|
web.config 변환에서 IIS 다시 쓰기 규칙 대체 (0) | 2023.09.07 |
셀레늄에서 원소의 속성을 얻는 방법 (0) | 2023.09.07 |
유튜브 동영상 삽입 "X-Frame-Options에 의해 표시가 금지되어 문서 표시 거부" (0) | 2023.09.07 |
MySQL - 문자열을 기본 키로 사용 (0) | 2023.09.07 |