diff --git a/src/libs/zbxjson/jsonpath.c b/src/libs/zbxjson/jsonpath.c
index 07622caf10..bf1bc0a001 100644
--- a/src/libs/zbxjson/jsonpath.c
+++ b/src/libs/zbxjson/jsonpath.c
@@ -1218,6 +1218,8 @@ static int	jsonpath_parse_dot_segment(const char *start, zbx_jsonpath_t *jsonpat
 				segment->data.function.type = ZBX_JSONPATH_FUNCTION_LENGTH;
 			else if (ZBX_CONST_STRLEN("first") == ptr - start && 0 == strncmp(start, "first", ptr - start))
 				segment->data.function.type = ZBX_JSONPATH_FUNCTION_FIRST;
+			else if (ZBX_CONST_STRLEN("sum") == ptr - start && 0 == strncmp(start, "sum", ptr - start))
+				segment->data.function.type = ZBX_JSONPATH_FUNCTION_SUM;
 			else
 				return zbx_jsonpath_error(start);
 
@@ -2194,6 +2196,7 @@ static int	jsonpath_apply_function(const zbx_vector_str_t *objects, zbx_jsonpath
 					result = value;
 				break;
 			case ZBX_JSONPATH_FUNCTION_AVG:
+			case ZBX_JSONPATH_FUNCTION_SUM:
 				result += value;
 				break;
 			default:
diff --git a/src/libs/zbxjson/jsonpath.h b/src/libs/zbxjson/jsonpath.h
index ce252f9c44..450d4e4d3f 100644
--- a/src/libs/zbxjson/jsonpath.h
+++ b/src/libs/zbxjson/jsonpath.h
@@ -47,7 +47,8 @@ typedef enum
 	ZBX_JSONPATH_FUNCTION_MAX,
 	ZBX_JSONPATH_FUNCTION_AVG,
 	ZBX_JSONPATH_FUNCTION_LENGTH,
-	ZBX_JSONPATH_FUNCTION_FIRST
+	ZBX_JSONPATH_FUNCTION_FIRST,
+	ZBX_JSONPATH_FUNCTION_SUM
 }
 zbx_jsonpath_function_type_t;
 
diff --git a/tests/libs/zbxjson/zbx_jsonpath_query.yaml b/tests/libs/zbxjson/zbx_jsonpath_query.yaml
index 5ff1d03b45..879e68f3ae 100644
--- a/tests/libs/zbxjson/zbx_jsonpath_query.yaml
+++ b/tests/libs/zbxjson/zbx_jsonpath_query.yaml
@@ -614,5 +614,14 @@ in:
   path: $.books[?(@.title =~ "[a-z")].title
 out:
   return: FAIL
+---
+test case: Query $.books[*].price.sum()
+include: &include zbx_jsonpath_query.inc.yaml
+in:
+  data: *include
+  path: $.books[*].price.sum()
+out:
+  return: SUCCEED
+  value: 53.92
 ...
 
