0

我有两个表:一个产品表和一个区域表。产品表包含产品的 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。我究竟做错了什么?

4

1 回答 1

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

还有SQL 小提琴

祝你好运。

于 2013-01-24T19:52:33.373 回答