首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对多个计数列使用Grouping集合

对多个计数列使用Grouping集合
EN

Stack Overflow用户
提问于 2014-12-02 23:28:30
回答 1查看 324关注 0票数 1

我正在尝试为我的数据库中的每个计算机制造商-型号组合获取三个特定的东西。这三件事是组合的数量,每个组合借阅的学生数量,以及计算机被借阅的总次数。后两者是不同的,因为学生可以多次借用相同的组合。最后一部分是获取每个列的总计(这似乎在我的查询中不能正确工作)。我开发了以下查询。

代码语言:javascript
复制
SELECT item_manuf||'-'|| item_model "item", 
    count(DISTINCT comp_id) "Num Comps", 
    count(DISTINCT st_id) "Num Users", 
    count(loan_id) "Num Loans"
FROM computer 
JOIN item USING (item_id)
JOIN loan USING (comp_id)
GROUP BY GROUPING SETS((Item_Manuf, 
    Item_Model),());

以及生成的表:

代码语言:javascript
复制
item                                                 Num Comps  Num Users  Num Loans
--------------------------------------------------- ---------- ---------- ----------
Acer-Aspire                                                  1          1          1
Apple-Macbook Air                                            1          1          1
Apple-Macbook Pro                                            1          1          1
Dell-Alienware                                               1          1          1
Dell-Inspiron                                                2          3          3
HP-Elitebook                                                 2          3          3
HP-Envy                                                      2          1          2
HP-Pavilion                                                  3          2          3
HP-Stream Notebook                                           1          1          1
Lenovo-ThinkPad                                              1          3          3
-                                                           15         10         19

11 rows selected.

每个特定组合行中的计数都是正确的。我已经用原始数据验证了这一点。但是,收到的总用户数是不正确的。我做了一些调查,注意到分组集给出了我们在数据库中的学生总数。不是唯一的学生手册模型组合的总数。我相信其他两个总数也会出现这种情况,但这是正确的结果。提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2014-12-03 00:06:23

在您的情况下,分组集不会给出总计。等价的查询是:

代码语言:javascript
复制
SELECT item_manuf||'-'|| item_model "item", 
    count(DISTINCT comp_id) "Num Comps", 
    count(DISTINCT st_id) "Num Users", 
    count(loan_id) "Num Loans"
FROM computer 
JOIN item USING (item_id)
JOIN loan USING (comp_id)
GROUP BY Item_Manuf, Item_Model
UNION ALL
SELECT null, 
    count(DISTINCT comp_id) "Num Comps", 
    count(DISTINCT st_id) "Num Users", 
    count(loan_id) "Num Loans"
FROM computer 
JOIN item USING (item_id)
JOIN loan USING (comp_id);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27253001

复制
相关文章

相似问题

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