select 32 / (32 + 21) *100
승률 계산하는 쿼리를 작성중인데...자꾸 결과 값이 0으로 나오네용.
xx.x 가 나와야하는데...
고수님들 도와주세요~~
Comment 5
-
진윤호
2013.04.01 14:57
변수시라면 cast 나 convert 해주시는 센스~
-
건우아빠
2013.04.01 15:33
정수 / 정수 = 정수
실수 / 정수 = 실수
정수 / 실수 = 실수
해커님과 진윤호님 말씀 처럼
실수형으로 형변환을 하시던 숫자에 1.0 을 하나 곱하여 실수화 시키시면 원하시는 결과를 얻으실수 있습니다.
-
쓸만한게없네(윤선식)
2013.04.01 16:42
원론적인 말씀을 드리면...
SQL Server에는 데이터 형식 우선순위라는 것이 있습니다.
저 수식에서는 암만봐도 INT 또는 BIGINT 등의 정수 형식만 존재하므로, 그 이상의 우선순위 형태로 자동으로 변경되지 않습니다.
만약 우선순위가 높은 데이터 형식이 수식 내에 있을 경우 해당 더 높은 우선순위 형식으로 자동 변경되게 됩니다.
아래는 그 우선순위입니다.
1. 사용자 정의 데이터 형식(가장 높음)
2. sql_variant
3. xml
4. datetimeoffset
5. datetime2
6. datetime
7. smalldatetime
8. date
9. time
10. float
11. real
12. decimal
13. money
14. smallmoney
15. bigint
16. int
17. smallint
18. tinyint
19. bit
20. ntext
21. text
22. image
23. timestamp
24. uniqueidentifier
25. nvarchar(nvarchar(max) 포함)
26. nchar
27. varchar(varchar(max) 포함)
28. char
29. varbinary(varbinary(max) 포함)
30. binary(가장 낮음)http://technet.microsoft.com/ko-kr/library/ms190309(v=sql.105).aspx
-
진윤호
2013.04.01 17:11
좋은 자료 감사 드립니다. ㅋㅋㅋ
1/2=0
1.0/2=0.5