我有两个数据集prod_cat_info和Transactions,其中包含产品类别和子类别的两个公共字段。我试图通过销售数量前5个类别的每个子类别的平均收入。我在where子句不起作用的查询中尝试了一下。
SELECT prod_cat_info.prod_subcat, AVG(Transactions.total_amt)
FROM Transactions INNER JOIN
prod_cat_info
ON Transactions.prod_cat_code = prod_cat_info.prod_cat_code AND
Transactions.prod_subcat_code = prod_cat_info.prod_sub_cat_code
GROUP BY prod_cat_info.prod_subcat
WHERE Transactions.prod_cat_code IN (
SELECT TOP 5 Transactions.prod_cat_code
FROM Transactions
GROUP BY Transactions.prod_cat_code
ORDER BY SUM(Transactions.Qty) DESC
)
GROUP BY prod_cat_info.prod_subcat发布于 2019-05-07 18:55:23
您根本不需要子查询。只需使用TOP和ORDER BY即可
SELECT TOP (5) pci.prod_subcat, AVG(t.total_amt)
FROM Transactions t INNER JOIN
prod_cat_info pci
ON t.prod_cat_code = pci.prod_cat_code AND
t.prod_subcat_code = pci.prod_sub_cat_code
GROUP BY pci.prod_subcat
ORDER BY SUM(t.qty DESC);编辑:
在MS Access中,对于已澄清的问题:
SELECT pci.prod_cat_code, pci.prod_subcat, AVG(t.total_amt)
FROM Transactions as t INNER JOIN
prod_cat_info as pci
ON t.prod_cat_code = pci.prod_cat_code AND
t.prod_subcat_code = pci.prod_sub_cat_code
WHERE pci.prod_cat_code IN (
SELECT TOP 5 t.prod_cat_code
FROM Transactions as t
GROUP BY t.prod_cat_code
ORDER BY t.qty DESC
)
GROUP BY pci.prod_cat_code, pci.prod_subcat;https://stackoverflow.com/questions/56020986
复制相似问题