1

我有两张桌子:

   产品项目
- PRODUCT_ID - ITEM_ID
- PRODUCT_DESC - STORE_ID
- VENDOR_CODE - PRODUCT_ID
                  - ITEM_PRICE

PRODUCT 表用于列出商店销售的每种产品的详细信息,ITEM 表本质上是每个故事的库存,列出每个商店中的产品及其价格。

我想要一个函数,它返回产品描述、商品数量 (COUNT) 以及同一产品类型的所有商品的平均价格。但是,我还希望在输出中仅列出超过 10 个项目的产品。

这是我到目前为止所拥有的:

SELECT PRODUCT.PRODUCT_DESC AS Description,
       COUNT(ITEM.ITEM_ID) AS Count,
       AVG(ITEM.ITEM_PRICE) AS [Average Price]
FROM PRODUCT, ITEM
WHERE PRODUCT.PRODUCT_ID = ITEM.PRODUCT_ID
AND COUNT(ITEM.ITEM_ID) > 10;

我正在使用 Access SQL,我将不胜感激!

4

2 回答 2

0

每当您使用诸如COUNTor之类的聚合函数AVG时,您都必须GROUP BY使用非聚合列,并验证COUNT, 使用HAVING COUNT. 你应该做这样的事情(未经测试):

SELECT PRODUCT.PRODUCT_DESC AS Description,
       COUNT(ITEM.ITEM_ID) AS Count,
       AVG(ITEM.ITEM_PRICE) AS [Average Price]
FROM PRODUCT, ITEM
WHERE PRODUCT.PRODUCT_ID = ITEM.PRODUCT_ID
GROUP BY PRODUCT.PRODUCT_DESC
HAVING COUNT(ITEM.ITEM_ID) > 10
于 2013-10-21T01:01:16.063 回答
0

尝试使用 INNER JOIN 而不是没有连接的过时的多个表,例如:

SELECT PRODUCT.PRODUCT_DESC AS Description,
COUNT(*) AS CountItems,
AVG(ITEM.ITEM_PRICE) AS [Average Price]
FROM ITEM
INNER JOIN PRODUCT
ON ITEM.PRODUCT_ID = PRODUCT.PRODUCT_ID
GROUP BY PRODUCT.PRODUCT_DESC
HAVING COUNT(*) > 10
于 2013-10-21T01:20:11.630 回答