查询每个CEO,商店类型的数量以及城市中的最大商品编号

时间:2016-11-19 01:27:45

标签: mysql sql

Store_Type  CEO_Name       *Table Store*        
Store1      CEO1            
Store2      CEO1            
Store3      CEO2            
Store4      CEO2            
Store5      CEO2            
Store6      CEO3            



City        Store_Type  Items          *Table City*
NY          Store1      8000000     
DC          Store1      600000      
Philly      Store1      1500000     
Ottawa      Store2      800000      
Tortonto    Store2      2500000     
Berlin      Store4      3500000     
Hamburg     Store4      2000000     
Bonn        Store4      300000      
Paris       Store5      2000000     
Lyon        Store5      700000      
Bamako      Store6      2000000     
Timbuktu    Store6      50000       
Mopti       Store6      100000      

通过检查表格,结果应与此类似:输出是针对每个CEO,列出该CEO的商店类型数量以及其城市中的最大商品数量

CE01        2             8000000
CEO2        2 (3?)        3500000
CE03        1             2000000

我尝试了多种方法来做到这一点但失败了。我知道我可以使用COUNT(Store_Type)来计算每个CEO拥有的商店类型数量,但由于存在重复项,因此很难将这个3列表格变为现实。然后将使用MAX(项目),但它必须是CEO整体的最大值。

我尝试将其分解,但我不断地收到群组错误。以下是我设法记下的一些例子,但是一旦我认为我有一个“顿悟”并改变了策略,我确实在命令行中尝试了多个蛮力,所以我没有保存。那些主要包含很多尝试加入但我仍然无法实现我想做的事情。因此,为什么我现在在这里问一个简单的SQL问题。

    select distinct B.CEO_Name
    from Store B, City C
    where B.Store_Type=C.Store_Type;
    -----
    select distinct B.CEO_Name
    from Store B, City C
    where B.Store_Type=C.Store_Type;
    INTERSECT 
    select COUNT(distinct Store_Type)
    from City;
    -----
    select distinct C.Store_Type, D.CEO, COUNT(distinct C.Store_Type)
    from City C, Store D
    where C.Store_Type=D.Store_Type;
    ------
    select D.CEO, COUNT(C.Store_Type)
    from Store D, City C
    where D.Store_Type=C.Store_Type;
    ------
    select D.CEO, COUNT(C.Store_Type)
    from Store D full outer join City C
    on (D.Store_Type=C.Store_Type);

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

SELECT I.CEO_Name, J.num_stores, I.max_items

FROM
(SELECT S.CEO_Name, MAX(Items) AS max_items
FROM Store S
INNER JOIN City C ON C.Store_Type = S.Store_Type
GROUP BY S.CEO_Name) I

INNER JOIN

(SELECT S.CEO_Name, COUNT(DISTINCT S.Store_Type) AS num_stores
FROM Store S
INNER JOIN City C ON C.Store_type = S.Store_type
GROUP BY S.CEO_Name) J ON I.CEO_Name = J.CEO_Name

ORDER BY I.CEO_Name

查询包括连接两个子查询以计算max_items和num_stores聚合,然后加入CEO_Name。

相关问题