我有两个表:产品表和区域表。产品表包含产品ID和区域代码,表示可以销售的国家/地区:
PRODUCT:
PRODUCT_ID | TERRITORY_CODE
----------------------------
PROD1 | 2
PROD2 | 0
PROD3 | 1
PROD4 | 0
PROD5 | 2
PROD6 | 0
PROD7 | 2
第二个表格包含一个区域代码以及允许销售的国家/地区的相应ISO代码。例如:
TERRITORY:
TERRITORY_CODE | COUNTRY_CODE
---------------------------
0 | US
1 | CA
2 | US
2 | CA
我想写一个查询,使用PRODUCT_IDs
作为关键字计算COUNTRY_CODE
的数量。
例如,我想知道在美国有多少不同的产品可供出售。我不想知道0
和2
是包含美国的地区代码,我只想查看COUNTRY_CODE
。我怎么能这样做?
在一些初步研究中,我发现WITH
子句可能有用,并提出以下查询:
WITH country AS (
SELECT (DISTINCT COUNTRY_CODE)
FROM TERRITORY
)
SELECT COUNT(DISTINCT PRODUCT_ID)
FROM country c,
PRODUCT p
WHERE p.TERRITORY_CODE=c.TERRITORY_ID;
但是,这不会产生预期的结果。我也无法通过COUNTRY_CODE
分组。我做错了什么?
答案 0 :(得分:4)
您似乎需要使用GROUP BY
。尝试这样的事情:
SELECT T.Country_Code, COUNT(DISTINCT PRODUCT_ID)
FROM Product P
JOIN Territory T ON P.Territory_Code = T.Territory_Code
GROUP BY T.Country_Code
祝你好运。