首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据vba sql中的销售数量,按前5个类别中的每个子类别查找平均收入

根据vba sql中的销售数量,按前5个类别中的每个子类别查找平均收入
EN

Stack Overflow用户
提问于 2019-05-07 18:53:10
回答 1查看 153关注 0票数 1

我有两个数据集prod_cat_infoTransactions,其中包含产品类别和子类别的两个公共字段。我试图通过销售数量前5个类别的每个子类别的平均收入。我在where子句不起作用的查询中尝试了一下。

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2019-05-07 18:55:23

您根本不需要子查询。只需使用TOPORDER BY即可

代码语言:javascript
运行
复制
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中,对于已澄清的问题:

代码语言:javascript
运行
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56020986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档