如何对求一个json的所有price字段求和sql
时间: 2024-09-13 08:07:24 浏览: 80
把一个json生成一个创建sql
4星 · 用户满意度95%
在SQL中,如果你有一个包含`price`字段的JSON对象列,并且你想计算所有记录中`price`字段的总和,假设这个表名为`table_name`,列名是`json_column`,你可以使用内置的JSON函数来完成。这通常需要数据库支持JSON操作,例如MySQL 8.0+、PostgreSQL或SQL Server等。
对于MySQL 8.0+,可以这样做:
```sql
SELECT JSON_EXTRACT_ALL(json_column, '$.price') AS prices,
SUM(JSON_UNQUOTE(JSON_EXTRACT(prices, '$[*]'))) AS total_price
FROM table_name;
```
这里,`JSON_EXTRACT_ALL`获取`price`字段的所有值,然后`JSON_UNQUOTE`解引号,因为`SUM`函数无法处理带引号的数值,`JSON_EXTRACT`则用于提取每个价格项。
其他数据库可能有不同的函数,如PostgreSQL:
```sql
SELECT jsonb_array_elements_text(json_column -> 'price') AS price,
array_sum(CAST(price AS NUMERIC)) AS total_price
FROM table_name;
```
或者SQL Server:
```sql
DECLARE @total DECIMAL(18,2);
SET @total = (SELECT CAST(JSON_VALUE(json_column, '$.price') AS BIGINT) * 1.0 FROM table_name)
UNION ALL SELECT JSON_VALUE(json_column, '$.price') * 1.0 FROM table_name WHERE JSON_VALUE(json_column, '$.price') IS NOT NULL
GROUP BY 1
WITH ROLLUP
SELECT SUM(total) AS total_price
```
阅读全文