SQL Server Count on a grouped by

标签 sql sql-server count group-by

我有3张 table 。我想按 item.name 分组并计算它可以在 idetail 中找到的次数。此查询仅计算所有行,而不是按行分组。

有谁知道如何修复它?

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

最佳答案

这就是你想要的:

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

关于SQL Server Count on a grouped by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700155/

相关文章:

sql - 将多个记录(行)合并为单个记录(行)

sql-server - SQL Server (2014) 来自 IN 变体的奇怪行为(列表)

sql - 记录列包含 char(x) 的计数

sql - Count的两种使用方式,是等价的吗?

mysql - 奇怪的SQL结果order by date, count(date)

MySql 插入重复键更新 - 唯一

mysql - 我可以使用 ODBC 参数两次吗?

sql - 如何在 SQL 中按两行分组?

sql-server - sql选择查询问题

sql - 影响查询结果的括号