programing

쿼리 결과를 mysql에서 10진수로 캐스트

minimums 2023. 10. 5. 21:25
반응형

쿼리 결과를 mysql에서 10진수로 캐스트

내가 가진 정보:

  • Mariadb 버전 : 10.3.10

자리가 있습니다.visits두개의 열이 있는.userid그리고.ref_url,어디에userid사용자의 ID이며.ref_url해당 URL에 해당합니다.userid참조했습니다.열에 빈 공간ref_url직접 방문에 해당하며 고려되지 않습니다.

표:vists

-------------------------------------
|  userid |        ref_url          | 
-------------------------------------
|      1  |                         |
|      1  | https://demosite.com    | 
|      1  | https://demosite2.com   |
|      1  |                         |
|      1  | https://demosite3.com   | 
|      1  |                         |
-------------------------------------

제가 기대하는 바는 다음과 같습니다.

총 개수를 세는 쿼리를 만들고 싶습니다.ref_url어떤 특정한 사건에 대한 사건들userid(ref_url 필드에 있는) 빈 공간을 제외하고, 카운트를 100 이내로 제한하고 카운트에 0.5를 곱하여 별칭 열에 DECIAL로 결과를 나타냅니다.estimated value.

------------------------------------
|  userid |    estimated value     | 
------------------------------------
|      1  |       1.50             |
------------------------------------

내 쿼리:

SELECT userid,
       CAST(((
              SELECT COUNT(NULLIF(TRIM(ref_url), ''))
                  FROM visits
                  LIMIT 0,100
             ) * 0.5) AS DECIMAL(12,2)) AS 'estimated value'
FROM visits

GROUP BY userid

위의 쿼리는 구문 오류를 던집니다.

SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 '2)' 근처에서 사용할 수 있는 올바른 구문을 확인하십시오.)

쿼리가 작동하는 시간은DECIMAL(12,2)로 대체됩니다.UNSIGNED.

관리자와 함께 DECIAL(12,2) 출력과 함께 사용할 경우 쿼리는 다음과 같습니다.

[1329] 데이터 없음 - 0개의 행을 가져오거나 선택 또는 처리했습니다.

마리애드브에게 직접 재판했을 때 말입니다허가 문제가 발생할 가능성이 있습니까?

LIMIT데이터가 수집된 에 발생합니다.하위 쿼리는 하나의 행만 수집하므로LIMIT관계가 없습니다.그러나 MySQL이 아닌 MariaDB를 사용하고 있으므로 다음과 같이 말할 수 있습니다.

LIMIT ROWS EXAMINED 100

(주의사항:저는 이것을 테스트하지 않았습니다.)

참조: https://mariadb.com/kb/en/library/limit-rows-examined/ -- MariaDB 5.5.21 이후

에 관해서는DECIMAL-- 대신에CAST(expression AS DECIMAL(10,2)),사용하다

FORMAT(expression, 2)

언급URL : https://stackoverflow.com/questions/53321999/cast-query-result-as-decimal-in-mysql

반응형