我知道您可以使用 GROUP BY 關鍵字按多列分組,但我不知道如何在一個查詢中按單獨的組分組:
Table: Humans
id | name | surname | year |
----|------|----------|-------|
1 | Egor | Krid | 14 |
2 | Dima | Maxnin | 12 |
3 | Ivan | Krid | 12 |
4 | Egor | Petrenko | 12 |
僅使用 GROUP BY 我得到這個:
SELECT name, surname, year, count(*) FROM Humans
GROUP BY name, surname, year
-----------------------------------------------
Table: Humans
name | surname | year | count
------|----------|-------|-------
Egor | Krid | 14 | 1
Egor | Petrenko | 12 | 1
Dima | Maxnin | 12 | 1
Ivan | Krid | 12 | 1
但這是我想要得到的結果:
Table: Humans
name | surname | year | count
------|----------|-------|-------
Dima | | | 1
Egor | | | 2
Ivan | | | 1
| Krid | | 2
| Maxnin | | 1
| Petrenko | | 1
| | 12 | 3
| | 14 | 1
如您所見,列被分組到不同的組中,最后一列顯示它們的數量。我假設你需要將它添加到查詢:ORDER BY "name", "surname", "year"。有人可以解釋在 PostgreSQL 中使用什么嗎?
uj5u.com熱心網友回復:
這就是分組集()的用途:
SELECT name, surname, year, count(*)
FROM Humans
GROUP BY grouping sets( (name), (surname), (year) )
在線示例
uj5u.com熱心網友回復:
試試這個(小提琴)
select name,'' as surname, count(*)
from humans
group by name
union
select '',surname, count(*)
from humans
group by surname
order by 2,1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364928.html
