我环顾四周但找不到答案 我需要一个查询,根据同一字段中的值
返回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
我尝试了JOIN
和UNION
没有太多运气
任何帮助赞赏
答案 0 :(得分:15)
MySQL没有 pivot 功能,因此您必须使用带有CASE
表达式的聚合函数来转换数据。对于此类计算,您将使用COUNT
或SUM
:
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
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
答案 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