基本上我有一個表cities,它看起來像這樣:
------ ----------- --------- ---------- ----------------
| id | name | lat | lng | submitted_by |
|------ ----------- --------- ---------- ----------------|
| 1 | Pyongyang | 39.0392 | 125.7625 | 15 |
| 2 | Oslo | 59.9139 | 10.7522 | 8 |
| 3 | Hebron | 31.5326 | 35.0998 | 8 |
| 4 | Hebron | 31.5326 | 35.0998 | 10 |
| 5 | Paris | 48.8566 | 2.3522 | 12 |
| 6 | Hebron | 31.5326 | 35.0998 | 7 |
------ ----------- --------- ---------- ----------------
期望的結果:
----------- ---------
| name | count |
|----------- ---------|
| Hebron | 3 |
| Pyongyang | 1 |
| Oslo | 1 |
| Paris | 1 |
| Total | 6 | <-- The tricky part
----------- ---------
換句話說,我需要做SELECT的是我當前正在使用的查詢中的
SUM:COUNTSELECT name, count(name)::int FROM cities GROUP BY name;
但顯然 PostgreSQL 中不允許嵌套聚合函式。我猜我需要以ROLLUP某種方式使用,但我似乎無法正確使用。
謝謝您的幫助。
uj5u.com熱心網友回復:
您需要 UMION ALL 的總和。
WITH ROLLUP 通過單獨匯總每個組的總數來作業,不能在這里使用。
CREATE TABLE cities ( "id" INTEGER, "name" VARCHAR(9), "lat" FLOAT, "lng" FLOAT, "submitted_by" INTEGER ); INSERT INTO cities ("id", "name", "lat", "lng", "submitted_by") VALUES ('1', 'Pyongyang', '39.0392', '125.7625', '15'), ('2', 'Oslo', '59.9139', '10.7522', '8'), ('3', 'Hebron', '31.5326', '35.0998', '8'), ('4', 'Hebron', '31.5326', '35.0998', '10'), ('5', 'Paris', '48.8566', '2.3522', '12'), ('6', 'Hebron', '31.5326', '35.0998', '7');
SELECT name, count(name)::int FROM cities GROUP BY name UNION ALL SELECT 'Total', COUNT(*) FROM cities姓名 | 數數 :-------- | ----: 希伯倫 | 3 平壤 | 1 奧斯陸 | 1 巴黎 | 1 總計 | 6
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448468.html
標籤:PostgreSQL
上一篇:如何在psycopg2中回滾?
