组合式Postgresql GROUB

组合式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'

嗨,我对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','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代码来解决我的问题。