2017-04-12 62 views
1

對行進行分組後,如何在返回值中包含組的最大值?從CockroachDB中的GROUP BY操作中選擇最大值?

舉例來說,如果我有這樣的數據:

INSERT INTO orders (customer_id, total) 
VALUES 
(1, 19.99), 
(2, 19.99), 
(1, 5.99), 
(2, 25.99); 

我知道我可以使用該查詢返回每個客戶:

SELECT customer_id FROM orders GROUP BY customer_id; 

但我怎麼爲orders.total添加最大值返回的值?

+0

什麼在發佈這樣的點問題和自己回答他們? –

+0

StackOverflow鼓勵用戶提出並回答他們自己的問題,因爲它可以幫助未來可能有類似問題的其他用戶。請參閱常見問題在這裏:https://stackoverflow.com/help/self-answer –

+0

肯定..但這個問題已被要求數千次,並有一個標籤「最大的每組特別」。 –

回答

1

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)