【发布时间】:2022-03-29 23:51:51
【问题描述】:
假设我有一个名为t_student_details 的表:
Name Age Marks Sport City ........ (multiple columns)
====== ===== ======= ======= ======
Jason 11 45 tennis New York
Mark 12 42 football New York
Jessica 11 43 tennis Orlando
Brad 13 46 tennis Orlando
.
.
.
(multiple rows)
我想在单个查询中获取有关学生的某些信息。这就是我在 Postgres 中要做的:
WITH sports_filter AS(
SELECT * FROM t_student_details WHERE sport=\'tennis\'
)
SELECT JSON_BUILD_OBJECT(\'max_age\', (SELECT MAX(age) FROM sports_filter),
\'min_age\', (SELECT MIN(age) FROM sports_filter),
\'city_wise_marks_mean\', (SELECT JSON_AGG(mean_items)
FROM (SELECT city, AVG(marks) FROM sports_filter
GROUP BY city) AS mean_items)
Postgres 中上述 SQL 查询的结果将是
{\"max_age\": 46,
\"min_age\": 43,
\"city_wise_marks_mean\": [{\"New York\": 45, \"Orlando\": 44.5}]}
很明显,我在单个查询中获得了有关属于运动“网球”的学生的多个聚合/信息。这种查询方式也只获取必要的数据,而不是所有的数据。
我如何使用德鲁伊实现这一目标?我不一定需要输出响应采用完全相同的格式,但是如何在同一个查询中获取所有这些统计信息,而不必获取学生的所有详细信息?是否可以使用 Apache Druid 在单个查询中获得所有这些信息?
标签: database analytics druid pydruid