sourcecode

SQL에서 출력을 정수로 선택/캐스팅

codebag 2023. 10. 20. 13:37
반응형

SQL에서 출력을 정수로 선택/캐스팅

저는 사용자 입력의 하루 평균 수치 그래프를 표시해야 하는 사이트에서 작업하고 있습니다.다음 정보를 반환하는 SQL 쿼리가 이미 있습니다.

SELECT sum(number)/count(number) as average, date FROM stats WHERE * GROUP BY date

이것은 제가 찾고 있는 결과를 주지만, 결과는 세 개의 소수점 정밀도로 주어집니다.저는 이 번호를 반올림하고 싶습니다.물론 PHP나 제 템플릿 엔진으로 할 수 있지만 데이터베이스에서 이 모든 것을 할 수 있는 방법이 있는지 궁금합니다.

(MySQL에서) 출력을 정수로 캐스트하는 방법이 있습니까?

SELECT 
  CAST(sum(number)/count(number) as UNSIGNED) as average, 
  date 
FROM stats 
WHERE * 
GROUP BY date

MySQL의 a에 대한 유효한 유형은 다음과 같습니다.

  • BINARY[(N)]
  • CHAR[(N)]
  • DATE
  • DATETIME
  • DECIMAL[(M[,D])]
  • SIGNED [INTEGER]
  • TIME
  • UNSIGNED [INTEGER]

그래서 당신은 사용할 수 있습니다.

SELECT CAST(sum(number)/count(number) AS UNSIGNED) as average...

아니면SIGNED만약에SUM부품은 음수가 될 수 있습니다.

연산자를 사용합니다.

mysql> SELECT 5 DIV 2;
    -> 2

정수 나눗셈.플로어()와 유사하지만 BIGINT 값으로 안전합니다.BIGINT 범위를 초과하는 비정수 피연산자의 경우 잘못된 결과가 발생할 수 있습니다.

MySQL을 사용해보는건 어떨까요?FORMAT기능?

mysql> SELECT FORMAT(12345.123456, 4);
+-------------------------+
| FORMAT(12345.123456, 4) |
+-------------------------+
| 12,345.1235             |
+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT FORMAT(12345.123456, 0);
+-------------------------+
| FORMAT(12345.123456, 0) |
+-------------------------+
| 12,345                  |
+-------------------------+
1 row in set (0.00 sec)
SELECT convert(int, sum(number)/count(number)) as average,
  date
FROM stats
WHERE * GROUP BY date

아니면

SELECT 
  CAST(sum(number)/count(number) as INT) as average, 
  date 
FROM stats 
WHERE * 
GROUP BY date
  1. 사용자 mysql 함수 라운드()
  2. 예제 라운드(23.33)는 23을 msyql로 반환합니다.

예제 쿼리가 다음으로 업데이트됩니다.

SELECT round(sum(number)/count(number)) as average, date FROM stats WHERE * GROUP BY date

언급URL : https://stackoverflow.com/questions/8895927/selecting-casting-output-as-integer-in-sql

반응형