组合式Postgresql GROUB
嗨,我对group by子句有问题,如果我在 这是我表格中的一部分,包含以下组合:组合式Postgresql GROUB,postgresql,group-by,Postgresql,Group By,嗨,我对group by子句有问题,如果我在 这是我表格中的一部分,包含以下组合: CREATE TABLE sampleTable ( id serial primary key, sat1 varchar(3), sat2 varchar(3) ); INSERT INTO sampleTable (sat1, sat2) VALUES ('LE7','LE7'), ('LE8','LE7'), ('LE7','LE7'), ('LE7'
CREATE TABLE sampleTable
(
id serial primary key,
sat1 varchar(3),
sat2 varchar(3)
);
INSERT INTO sampleTable
(sat1, sat2)
VALUES
('LE7','LE7'),
('LE8','LE7'),
('LE7','LE7'),
('LE7','LC8'),
('LE7','LE8'),
('LE8','LE7'),
...
我搜索组合的计数,但对我来说,组合sat1,sat2与sat2,sat1相同
我的(错误)SQL代码:
select sat1, sat2, count(*) from sampleTable group by sat1, sat2 order by sat1
结果是:
sat1 sat2 count
1 LC8 LC8 27
2 LC8 LE7 17
3 LE7 LE7 200
4 LE7 LC8 22
5 LM1 LM2 2
6 LM1 LM1 12
7 LM2 LM2 6
8 LM2 LM1 3
但它应该:
sat1 sat2 count
1 LC8 LC8 27
2 LC8 LE7 39 (17+22 / line 2 & 4)
3 LE7 LE7 200
4 LM1 LM2 5 (2+3 / line 5 & 8)
5 LM1 LM1 12
6 LM2 LM2 6
有人用SQL代码解决了我的问题吗?
谢谢你的帮助 使用最小()和最大()来“简化”两个分组列:
查询1:
select least(sat1, sat2), greatest(sat1, sat2), count(*)
from sampleTable
group by least(sat1, sat2), greatest(sat1, sat2)
order by least(sat1, sat2)
| least | greatest | count |
|-------|----------|-------|
| LC8 | LC8 | 27 |
| LC8 | LE7 | 39 |
| LE7 | LE7 | 200 |
| LM1 | LM1 | 12 |
| LM1 | LM2 | 5 |
| LM2 | LM2 | 6 |
[结果][2]:
select least(sat1, sat2), greatest(sat1, sat2), count(*)
from sampleTable
group by least(sat1, sat2), greatest(sat1, sat2)
order by least(sat1, sat2)
| least | greatest | count |
|-------|----------|-------|
| LC8 | LC8 | 27 |
| LC8 | LE7 | 39 |
| LE7 | LE7 | 200 |
| LM1 | LM1 | 12 |
| LM1 | LM2 | 5 |
| LM2 | LM2 | 6 |
见此第2行表示column1=LC8和column2=LE7 COUNT=17,而第4行表示column1=LE7和column2=LC8 COUNT=22,这是不同的!我现在知道groubby子句采用了什么,因此我搜索一个SQL代码来解决我的问题。