[SQL] 비트 필드에 MIN 집계 함수를 적용
SQL비트 필드에 MIN 집계 함수를 적용
나는 다음과 같은 쿼리를 작성하려면 :
SELECT ..., MIN(SomeBitField), ...
FROM ...
WHERE ...
GROUP BY ...
나는 그것이 오류 피연산자 데이터 형식 비트 분 연산자에 대한 잘못된 반환하는 비트 필드의 최소 값을 계산하려고 할 때 문제는 SQL Server가 없습니다 그것 같이 수행한다.
나는 다음과 같은 해결 방법을 사용할 수 있습니다 :
SELECT ..., CAST(MIN(CAST(SomeBitField AS INT)) AS BIT), ...
FROM ...
WHERE ...
GROUP BY ...
그러나, 뭔가 더 우아? (예를 들어, 거기에 내가 모르는, 집계 함수, 그리고 그 논리와 필드의 비트 값의 평가 있습니다.)
해결법
-
==============================
1.BIT 만 두 가지 옵션이 있기 때문에, 단지 case 문을 사용합니다 :
BIT 만 두 가지 옵션이 있기 때문에, 단지 case 문을 사용합니다 :
SELECT CASE WHEN EXISTS (SELECT 1 FROM ....) THEN 1 ELSE 0 END AS 'MinBit' FROM ... WHERE ...
이것은 장점이 있습니다 :
그것은 쓰기에 좀 더 코드이지만 끔찍한 안된다. 당신은 당신이 항상 쿼리의 시작 부분에 CTE에서 (조인 모든 및 필터 기준) 당신의 큰 결과 집합을 캡슐화 할 수 확인하기 위해 여러 값을 가질 경우, CASE 문에서 해당 참조.
-
==============================
2.하나의 옵션은 MIN (SomeBitField + 0)입니다. 그것은 (I 우아함으로 자격이) 적은 소음으로 잘 읽습니다.
하나의 옵션은 MIN (SomeBitField + 0)입니다. 그것은 (I 우아함으로 자격이) 적은 소음으로 잘 읽습니다.
말했다, 그것은 CASE 옵션보다 더 많은 해킹 틱입니다. 그리고 속도 / 효율성에 대해 아무것도 몰라.
-
==============================
3.이 쿼리는 가장 좋은 솔루션입니다 :
이 쿼리는 가장 좋은 솔루션입니다 :
SELECT CASE WHEN MIN(BitField+0) = 1 THEN 'True' ELSE 'False' END AS MyColumn FROM MyTable
당신이 비트 필드 + 0 추가하면 자동 INT처럼 될 것입니다
-
==============================
4.
select min(convert(int, somebitfield))
또는 당신은 비트와 같은 결과를 유지하려는 경우
select convert(bit, min(convert(int, somebitfield)))
-
==============================
5.다음을 시도하십시오 참고 : 최소 대표와 집계 함수는 최대 진술하거나 집계 함수
다음을 시도하십시오 참고 : 최소 대표와 집계 함수는 최대 진술하거나 집계 함수
SELECT ..., MIN(case when SomeBitField=1 then 1 else 0 end), MIN(SomeBitField+0)... FROM ... WHERE ... GROUP BY ...
동일한 결과
-
==============================
6.코드의이 작은 조각은 항상 마법처럼 저와 함께 일했다 :
코드의이 작은 조각은 항상 마법처럼 저와 함께 일했다 :
CONVERT(BIT, MIN(CONVERT(INT, BitField))) as BitField
-
==============================
7.AVG (CAST () FLOAT AS 부울 열) OVER (...) 부울 AGGREGATE
AVG (CAST () FLOAT AS 부울 열) OVER (...) 부울 AGGREGATE
퍼지 부울 보내기
from https://stackoverflow.com/questions/6997721/applying-the-min-aggregate-function-to-a-bit-field by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL Server의 다른 데이터베이스에서 테이블의 데이터를 선택하려면? (0) | 2020.06.26 |
---|---|
[SQL] SQL 구문을 사용하여 MySQL의 테이블에서 마지막 레코드를 선택하는 방법 (0) | 2020.06.26 |
[SQL] 어떻게 PostgreSQL의 쿼리 문 여러 사용 하는가? (0) | 2020.06.26 |
[SQL] 어떻게 그룹에 스파크 SQL에서 시간 간격으로 (0) | 2020.06.26 |
[SQL] SQL : 적어도 N 시간에 발생하는 열 값을 가진 행을 선택? (0) | 2020.06.26 |