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
假设value1
、value2
和value3
只能是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
我创建了名为 '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
假设value1
、value2
和value3
只能是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