首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分组依据上的SQL Server计数

问分组依据上的SQL Server计数
EN

Stack Overflow用户
提问于 2011-01-15 22:40:54
回答 2查看 3.5K关注 0票数 4

我有三张桌子。我想按item.name分组,并计算在idetail中可以找到它的次数。此查询只计算所有行的数量,而不计算分组依据行的数量。

有人知道怎么修吗?

代码语言:javascript
复制
SELECT i.name, COUNT(i.name)
FROM item AS i
INNER JOIN item_category AS ic ON i.i_category_id = ic.ic_id
INNER JOIN idetail AS id ON ic.ic_id = id.id_category_id
WHERE ic.ic_id = 1002
GROUP BY i.name
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-20 07:34:34

这就是你想要的:

代码语言:javascript
复制
select x.name
     , count(*) as cntNames
     , sum(x.cntDetails) as cntDetails
  from (
        SELECT i.name, COUNT(*) as cntDetails
          FROM item AS i
         INNER JOIN item_category AS ic ON i.i_category_id = ic.ic_id
         INNER JOIN idetail AS id ON ic.ic_id = id.id_category_id
         WHERE ic.ic_id = 1002
          -- NOTICE THE 2nd Value in the group by!
         GROUP BY i.name,id.id_category_id
       ) x
  group by name
票数 1
EN

Stack Overflow用户

发布于 2011-01-16 00:54:47

代码语言:javascript
复制
Select  Count(*)
From    (
            Select i.name, Count(i.name)
            From item As I
                Join item_category As ic
                    On ic.ic_id = i.category_id
                Join idetail as ID
                    On ID.id_category_id = ic.ic_id
            Where ic.ic_id = 1002
            Group By i.name
            ) As Z

如果您想要这三列,并且您正在使用SQL Server 2005+

代码语言:javascript
复制
With Items As
    (
    Select I.name, Count(i.name) As ItemCount
    From item As I
        Join item_category As ic
            On ic.ic_id = i.category_id
        Join idetail as ID
            On ID.id_category_id = ic.ic_id
    Where ic.ic_id = 1002
    Group By i.name
    )
Select Name, ItemCount
    ,   (
        Select Count(*)
        From Items
        ) As OverallCount
From Items  

如果您使用的是SQL Server 2005+,则是另一个更简单的版本。

代码语言:javascript
复制
Select i.name
    , Count(i.name) As CountByName
    , Count(*) Over() As TotalCount
From item As I
    Join item_category As ic
        On ic.ic_id = i.category_id
    Join idetail as ID
        On ID.id_category_id = ic.ic_id
Where ic.ic_id = 1002
Group By i.name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4700155

复制
相关文章

相似问题

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