mysql在同一个字段中的多个计数和组值

时间:2013-03-21 20:04:21

标签: mysql sql

我环顾四周但找不到答案 我需要一个查询,根据同一字段中的值

返回2组值作为字段名称

示例我有一张表

NAME, VALUE
name1, 2
name1, 2
name1, 3
name1, 4
name2, 2
name2, 2
name2, 3
name2, 4

现在我想在一个组中对值2和3进行计数和分组,在另一个组中对值4进行分组,因此我的结果看起来像这样

NAME, GRP1_COUNT, GRP2_COUNT
name1, 3, 1
name2, 3, 1

我尝试了JOINUNION没有太多运气 任何帮助赞赏

2 个答案:

答案 0 :(得分:15)

MySQL没有 pivot 功能,因此您必须使用带有CASE表达式的聚合函数来转换数据。对于此类计算,您将使用COUNTSUM

select name,
  sum(case when value in (2,3) then 1 else 0 end) GRP1_COUNT,
  sum(case when value = 4 then 1 else 0 end) GRP2_COUNT
from yourtable
group by name

请参阅SQL Fiddle with Demo

COUNT版本:

select name,
  count(case when value in (2,3) then VALUE end) GRP1_COUNT,
  count(case when value = 4 then VALUE end) GRP2_COUNT
from yourtable
group by name

请参阅SQL Fiddle with Demo

答案 1 :(得分:5)

试试这个

SELECT
name,
sum(case when value=2 or value=3 then 1 else 0 end),
sum(case when value=4 then 1 else 0 end)
FROM YourTable
GROUP BY name