SQL 使用 GROUP BY 和 COUNT

SQL using GROUP BY and COUNT

我创建了名为 'group_test' 的 MariaDB(10.1.21) table 并保存了一些数据如下。

Group  Item   Value1 Value2 Value3
A      a1     1      0      0
A      a2     1      1      1
A      a3     1      1      2
B      b1     1      1      0
B      b2     1      1      1
B      b3     1      0      0
B      b4     1      1      3
C      c1     1      1      0
C      c2     1      1      1

使用查询,我想立即得到如下结果。

Group  Items  Value1_1  Value2_1  Value3_1
A      3      3         2         1
B      4      4         3         1
C      2      2         2         1

项是指 'Group' 中 'Item' 的总数。
ValueN_1表示'Group'中'ValueN'值等于1的总数。

我想我会使用 GROUP BY 和 COUNT,但我不知道该怎么做。
如何编写 SQL 以在一次查询中获得上述结果?

谢谢。

只需做一个GROUP BY。由于 Value1 到 Value3 只有 0 和 1,所以可以使用 SUM() 来计算 1。

select Group, count(Item), sum(Value1), sum(Value2), sum(Value3)
from tablename
group by Group

编辑:ValueN 的值可以从 0 到 4”:

select Group,
       count(Item),
       sum(case when Value1 = 1 then 1 else 0 end) Value1_1,
       sum(case when Value2 = 1 then 1 else 0 end) Value2_1,
       sum(case when Value3 = 1 then 1 else 0 end) Value3_1
from tablename
group by Group

假设value1value2value3只能是0或1,可以这样写

select  Group,
        count(*) as Items,
        sum(value1) as Value1_1,
        sum(value2) as Value2_1,
        sum(value3) as Value3_1
from    yourTable t1
group by Group

如果不是这种情况,您将不得不在 sum

中使用 case
select  Group,
        count(*) as Items,
        sum(case when value1 = 1 then 1 else 0 end) as Value1_1,
        sum(case when value2 = 1 then 1 else 0 end) as Value2_1,
        sum(case when value3 = 1 then 1 else 0 end) as Value3_1
from    yourTable t1
group by Group

在SELECT语句中使用GROUP BY子句和SUM聚合函数

SELECT * 
FROM 
(
  SELECT [Group], count(Item) Item, sum(Value1) Value1, sum(Value2) Value2, 
       sum(Value3) Value3
  FROM Your_tableName
  GROUP BY [Group]
) A