programing

SQL 0(음의 값인 경우)

goodsources 2023. 10. 18. 22:04
반응형

SQL 0(음의 값인 경우)

그래서 음의 값을 0으로 바꾸고 싶습니다.저는 두 가지 솔루션을 발견했습니다.

SUM(IF(ordered_item.amount < 0, 0, ordered_item.amount)) as purchases

그리고.

SUM(CASE WHEN ordered_item.amount < 0 THEN 0 ELSE ordered_item.amount END) as purchases

둘 다 같은 결과를 주지만 어느 쪽이 가장 좋은 성적을 낼 수 있을까요?그리고 부정적인 것을 부정적인 것으로 바꿀 수 있는 간단한 해결책이 있을까요?0.

GREATEST() 함수를 사용할 수도 있습니다.

SUM(GREATEST(ordered_item.amount, 0)) as purchases

변환할 필요가 없도록 필드를 "서명되지 않음"으로 정의할 수 있습니다.

CREATE TABLE ordered_item ( 
order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
amount INT UNSIGNED NOT NULL, 
PRIMARY KEY (`order_id `) 
); 

https://dev.mysql.com/doc/refman/5.0/en/integer-types.html

이 답을 본 적이 없으니 수학 논리를 구현해 보는 건 어떨까요?

(abs(x)+x)/2

5와 -5로 시도하면 각각 5와 0이 됩니다.계산 집약적인지는 확실하지 않지만 다음과 같이 쓰기 쉽습니다.

Select (ABS(ordered_item.amount) + ordered_item.amount ) / 2 as purchases
from ordered_item

데이터셋으로 시도해보시면 속도를 알려주세요, 저도 비슷한 속도를 얻고 있습니다.

언급URL : https://stackoverflow.com/questions/29968334/sql-0-if-negative-value

반응형