반응형
MariaDB: JSON의 합계값
JSON 스니펫의 특정 값을 다음 예와 같이 정리합니다.
set @json='
{
"items": [
{
"a": {
"a_amount": "0.0020095"
},
"b": {
"b_amount": "0.0004"
}
},
{
"a": {
"a_amount": "0.02763081"
},
"b": {
"b_amount": "0.0055"
}
}
]
}';
모두 합산해야 합니다.a.a_amount
그리고 모든 것b.b_amount
혼자서도 할 수 있는 그런 걸 하고 싶어요.SUM(a.a_amount)
그리고.SUM(b.b_amount)
.
그러나 저는 다음과 같은 각각의 가치를 추출하는 것 외에는 더 이상 진전되지 않았습니다.
SELECT JSON_EXTRACT(@json, '$.items[*].a.a_amount') AS sum_a,
JSON_EXTRACT(@json, '$.items[*].b.b_amount') AS sum_b;
sum_a | sum_b |
---|---|
["0.0020095", "0.02763081"] | ["0.0004", "0.0055"] |
만지작거리고 있다JSON_EXTRACT()
,JSON_VALUE()
그리고 심지어ha_connect
플러그인은 아직 필요한 금액을 얻을 수 있는 SQL 코드를 생각해내지 못했습니다.
누가 날 도와줄까?
하나의 옵션은 재귀 CTE와 함께 DUBLE 변환을 사용하는 것입니다.JSON_EXTRACT()
등의 기능
WITH RECURSIVE cte AS
(
SELECT 0 i
UNION ALL
SELECT i + 1 i
FROM cte
WHERE i + 1 <= ( SELECT JSON_LENGTH(json) FROM j )
)
SELECT SUM(CAST(JSON_EXTRACT(json, CONCAT('$.items[',i,'].a.a_amount')) AS DOUBLE)) AS sum_a,
SUM(CAST(JSON_EXTRACT(json, CONCAT('$.items[',i,'].b.b_amount')) AS DOUBLE)) AS sum_b
FROM cte,
j
sum_a | sum_b |
---|---|
0.02964031 | 0.0059 |
JSON 테이블 기능이 도움이 될 수 있습니다.다음은 데이터에 대한 작은 예입니다.데이터 타입을 조금 조작해야 할 수도 있습니다.
SELECT
SUM(a_amount),
SUM(b_amount)
FROM
(
SELECT * FROM
JSON_TABLE(@json, '$.items[*]' COLUMNS(
a_amount FLOAT PATH '$.a.a_amount',
b_amount FLOAT PATH '$.b.b_amount'
)
) as items
) as temp;
SUM(a_금액) | SUM(b_mount) |
---|---|
0.029640309745445848 | 0.005899999960092828 |
언급URL : https://stackoverflow.com/questions/70568219/mariadb-sum-values-from-json
반응형
'source' 카테고리의 다른 글
다차원 어레이를 단일 어레이로 변환 (0) | 2022.11.05 |
---|---|
그래프와 일치하도록 Matplotlib 색상 막대 크기 설정 (0) | 2022.11.05 |
앱을 로드하기 전에 vuex 스토어에 데이터를 로드합니다. 이 작업을 수행하려면 어떻게 해야 합니까? (0) | 2022.11.05 |
MySQL 데이터베이스 포함 Python 3.4.0 (0) | 2022.11.05 |
date_modify를 DateTime 객체로 사용하여 php에서 현재 달의 첫 번째 날 (0) | 2022.11.05 |