目前我正面临一个 SQL 挑战,并且想知道我的方法是否正确。让我们考虑以下简化的数据模型:
Table CAT:
----------
ID
COLOR
Table DOMESTIC_CAT:
-------------------
CAT_ID
DOMESTIC_ATTRIBUTE
Table PERSIAN_CAT:
------------------
CAT_ID
PERSIAN_ATTRIBUTE
假设我们在表中有以下数据:
Table CAT:
ID COLOR
--------------
1 'BLACK'
2 'WHITE'
3 'BLACK'
4 'WHITE'
5 'BLACK'
6 'RED'
7 'WHITE'
8 'WHITE'
9 'RED'
10 'BLACK'
Table DOMESTIC_CAT:
CAT_ID DOMESTIC_ATTRIBUTE
----------------------------
1 'Domestic1'
2 'Domestic2'
3 'Domestic3'
7 'Domestic4'
8 'Domestic5'
Table PERSIAN_CAT
CAT_ID PERSIAN_ATTRIBUTE
---------------------------
4 'Persian1'
5 'Persian2'
6 'Persian3'
9 'Persian4'
10 'Persian5'
我想执行一个聚合查询,结果如下:
CAT_TYPE CAT_COLOR COUNT
---------------------------------
'DOMESTIC_CAT' 'BLACK' 2
'DOMESTIC_CAT' 'WHITE' 3
'PERSIAN_CAT' 'WHITE' 1
'PERSIAN_CAT' 'BLACK' 2
'PERSIAN_CAT' 'RED' 2
如您所见,我想按以下值对“计数”结果进行分组: - 事实上,给定的猫是家猫还是波斯猫 - 猫的颜色
第一个是困难的 - 我实际上不知道是否有可能执行“按连接表分组”?我很头疼,但找不到任何解决方案:(实际使用的 RDBMS 将是 Oracle 11。