我有两个表:一个产品表和一个地区表。产品表包含产品的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我想写一个使用COUNTRY_CODE作为关键字来计算PRODUCT_IDs数量的查询。
例如,我想知道在美国有多少不同的产品在销售。我不想知道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的群组里。我做错了什么?
发布于 2013-01-25 03:52:33
看起来你需要使用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还有SQL Fiddle。
祝好运。
https://stackoverflow.com/questions/14509296
复制相似问题