我有两个表:
产品项目- 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;
我正在使用访问SQL,我将不胜感激任何帮助!
尝试使用 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
每当使用聚合函数(如 COUNT
或 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