Select CockroachDB 中 GROUP BY 操作的最大值?
Select the maximum value from a GROUP BY operation in CockroachDB?
对行进行分组后,如何在 return 值中也包含该组的最大值?
例如,如果我有这个数据:
INSERT INTO orders (customer_id, total)
VALUES
(1, 19.99),
(2, 19.99),
(1, 5.99),
(2, 25.99);
我知道我可以 return 每个使用此查询的客户:
SELECT customer_id FROM orders GROUP BY customer_id;
但是如何将 orders.total
的最大值添加到 returned 值中?
CockroachDB 支持这种关系的标准 SQL 语法。以下查询为每个 customer_id
生成一个结果,其中包含该客户的 customer_id
和最大值 total
:
SELECT x.customer_id, x.total
FROM orders AS x
JOIN (SELECT o.customer_id,
MAX(total) AS max_total
FROM orders o
GROUP BY o.customer_id) y
ON y.customer_id = x.customer_id
AND y.max_total = x.total
GROUP BY x.customer_id, x.total;
样本数据的结果如下:
+-------------+-------+
| customer_id | total |
+-------------+-------+
| 1 | 19.99 |
| 2 | 25.99 |
+-------------+-------+
(2 rows)
对行进行分组后,如何在 return 值中也包含该组的最大值?
例如,如果我有这个数据:
INSERT INTO orders (customer_id, total)
VALUES
(1, 19.99),
(2, 19.99),
(1, 5.99),
(2, 25.99);
我知道我可以 return 每个使用此查询的客户:
SELECT customer_id FROM orders GROUP BY customer_id;
但是如何将 orders.total
的最大值添加到 returned 值中?
CockroachDB 支持这种关系的标准 SQL 语法。以下查询为每个 customer_id
生成一个结果,其中包含该客户的 customer_id
和最大值 total
:
SELECT x.customer_id, x.total
FROM orders AS x
JOIN (SELECT o.customer_id,
MAX(total) AS max_total
FROM orders o
GROUP BY o.customer_id) y
ON y.customer_id = x.customer_id
AND y.max_total = x.total
GROUP BY x.customer_id, x.total;
样本数据的结果如下:
+-------------+-------+
| customer_id | total |
+-------------+-------+
| 1 | 19.99 |
| 2 | 25.99 |
+-------------+-------+
(2 rows)