source

MariaDB: Count Different는 도청되었습니까?

nicesource 2022. 11. 24. 20:44
반응형

MariaDB: Count Different는 도청되었습니까?

다음 3가지 요청이 있습니다.

SELECT COUNT(DISTINCT origine_client_id,  annee_imputation)
         FROM dossier d1;

34438

SELECT COUNT(DISTINCT d2.origine_client_id,  d2.annee_imputation)
         FROM (SELECT origine_client_id,  annee_imputation
                  FROM dossier) as d2;

34438

SELECT COUNT(*)
         FROM (SELECT DISTINCT origine_client_id,  annee_imputation
                 FROM dossier) as d3;

34478

하지만 같은 결과를 얻지 못했습니다.왜일까요? (Mariadb를 사용하고 있습니다)

편집:

@jarlh

SELECT COUNT(DISTINCT origine_client_id) FROM dossier;=>19488

SELECT COUNT(DISTINCT annee_imputation) FROM dossier;=>42

이름 없음 @a_horse_no_name

네, 늘 값이 있습니다.

SELECT COUNT(id) FROM dossier WHERE annee_imputation IS NULL;=> 1

SELECT COUNT(id) FROM dossier WHERE origine_client_id IS NULL;=> 289 711

SELECT COUNT(id) FROM dossier WHERE origine_client_id IS NULL AND annee_imputation IS NULL;=> 1

문서 기준:

카운트(구별 표현, [표현...])

NULL이 아닌 다른 값의 카운트를 반환합니다.

이 구문은 비표준 MySQL/MariaDB 확장입니다."non-NULL"은 모두 카운트할 NULL이 아닌 것으로 간주됩니다.

데모:

CREATE TABLE dossier
AS
SELECT 1 origine_client_id, 2 annee_imputation  UNION ALL  -- both values provided
SELECT NULL, NULL UNION ALL
SELECT NULL origine_client_id, 1 annee_imputation UNION ALL
SELECT 1 origine_client_id, NULL annee_imputation;

쿼리:

SELECT COUNT(DISTINCT origine_client_id,  annee_imputation) FROM dossier d1;
-- 1

SELECT COUNT(DISTINCT d2.origine_client_id,  d2.annee_imputation) 
FROM (SELECT origine_client_id,  annee_imputation FROM dossier) as d2;
-- 1

SELECT COUNT(*) 
FROM (SELECT DISTINCT origine_client_id,  annee_imputation FROM dossier) as d3;
-- 4

db <> 데모 표시

이름이 없는 a_horse_no_name이 적절한 질문을 한 것 같습니다.이것은 더 단순하고 유사할 수 있습니다.

CREATE TABLE t (s1 INT PRIMARY KEY, s2 INT);
INSERT INTO t VALUES (1, 1), (2, NULL), (3, NULL);
SELECT COUNT(DISTINCT s2) FROM t;
SELECT COUNT(*) FROM (SELECT DISTINCT s2 FROM t) AS x;

첫 번째 경우 함수가 완료되기 전에 늘이 제거되므로 답은 1입니다.두 번째 경우 Null은 함수가 완료되기 전에 제거되지 않으므로 답은 2입니다.업데이트 후 추가: 명확하게 말하지 못해 죄송합니다. 이 예에서는 null이 제거된다는 경고가 없다는 점을 제외하고 SQL 표준에 위배되지 않는 예상 동작을 보여 줍니다.

언급URL : https://stackoverflow.com/questions/64860203/mariadb-is-count-distinct-bugged

반응형