嗨,如果我有组合,我对分组依据子句有问题,
这是我表格中带有组合的部分:
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'),
...
http://sqlfiddle.com/#!15/63104/2
我搜索组合的数量,但对我来说,组合 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代码? 感谢您的帮助!!
使用 MINIMUM(( 和 GREATEST(( 来"简化"2 个分组列:
查询 1:
select least(sat1, sat2), greatest(sat1, sat2), count(*)
from sampleTable
group by least(sat1, sat2), greatest(sat1, sat2)
order by least(sat1, sat2)
[结果][2]:
| least | greatest | count |
|-------|----------|-------|
| LC8 | LC8 | 27 |
| LC8 | LE7 | 39 |
| LE7 | LE7 | 200 |
| LM1 | LM1 | 12 |
| LM1 | LM2 | 5 |
| LM2 | LM2 | 6 |
请参阅此 SQL 小提琴