繁体   English   中英

使用分组依据,前N个和总和进行查询

[英]Query using Group By, Top N and Sum

我浏览了整个论坛,可以找到各种示例来解决我的问题,但不能将所有内容放在一起。

我的情况很典型,我想按组(Shop_Lookup.ShopGroup])显示其总收入的前10名客户(Orders。[客户名称])。

到目前为止,无论ShopGroup如何,我都可以得出整体排名前10位的信息,但是我无法全力以赴地使Sub Query正常工作。 我当前的代码是-

SELECT TOP 10 Orders.[Customer Name], 
              Sum(Orders.[Actual Revenue]) AS [SumOfActual Revenue],
              Orders.[This Month], 
              Shop_Lookup.[ShopGroup]

FROM Orders 
INNER JOIN Shop_Lookup ON Orders.[ShopID] = ShopLookup.[ShopID]    
WHERE ((Orders.[This Month])="current")    
GROUP BY Orders.[Customer Name], Orders.[This Month], Shop_Lookup.[ShopGroup]    
ORDER BY Sum(Orders.[Actual Revenue]) DESC;

完全经过空气编码! 请谨慎操作。

您可以使用Sub Query来获得!

SELECT 
    Orders.[Customer Name], 
    Sum(Orders.[Actual Revenue]) AS [SumOfActual Revenue],
    Orders.[This Month], 
    Shop_Lookup.[ShopGroup]
FROM 
    Orders
    INNER JOIN 
    Shop_Lookup 
    ON 
    Orders.[ShopID] = ShopLookup.[ShopID]    
WHERE 
    (
        (Orders.[This Month] = 'Current')
        AND
        (Orders.ShopID IN
            (SELECT 
                TOP 10 ShopID                            
            FROM 
                Orders AS Dupe                              
            WHERE 
                Dupe.ShopID = Orders.ShopID      
            )
        )
    )
GROUP BY 
    Orders.[Customer Name], 
    Orders.[This Month], 
    Shop_Lookup.[ShopGroup]    
ORDER BY 
    Sum(Orders.[Actual Revenue]) DESC;

有关子查询的更多信息: http : //allenbrowne.com/subquery-01.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM