반응형
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
반응형
'programing' 카테고리의 다른 글
zLib을 사용하여 감압 및 팽창 (0) | 2023.10.23 |
---|---|
mysql2 버전(0.3.2)은 이제 Rails 3.1의 일부이므로 ActiveRecord 어댑터가 번들로 제공되지 않습니다. (0) | 2023.10.23 |
angularjs: ng-message가 항상 표시됨 (0) | 2023.10.18 |
UIView 하위 클래스의 Nib을 로드하는 올바른 방법 (0) | 2023.10.18 |
angularjs로 ng가 아닌 다른 접두사를 사용해도 될까요? (0) | 2023.10.18 |