您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
MySQL如何实现按某字段的不同取值进行统计?
字段,不同,方式MySQL如何实现按某字段的不同取值进行统计?
发布时间:2016-12-08加入收藏来源:互联网点击:
MySQL如何实现按某字段的不同取值进行统计?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
MySQL 中使用 Group By 可以轻松实现按某个或者某几个字段的不同取值进行分组统计。
我们以如下 学生信息表 Students_hobby_t为例,统计age字段获取不同年龄的学生数量。
SQL 语句如下,我们按照Age字段进行分组,并且使得结果按照Age字段降序排序:
上述SQL查询结果如下,实现了按照年龄字段的不同值进行统计:
回答于 2019-09-11 08:43:50
mysql 按字段不同值进行统计最简单的方式是使用 group by
比如 TableA 表有字段 A(分别取值1,2,3,4,5)
统计 A字段 不同值的数量:
select A, count(1) '计数'
from TableA
group by A
order by A
;
统计 A字段 不同值的 合计知:
select A, sum(A) '合计'
from TableA
group by A
order by A
;
回答于 2019-09-11 08:43:50
两种if 函数实现
另外一种:case when
SELECT a.periodid, a.periodseq, ifnull(CASE p_stautstype
WHEN 'inputflag' THEN inputflag
WHEN 'sdvflag' THEN sdvflag
WHEN 'dmflag' THEN dmflag
WHEN 'mrflag' THEN mrflag
WHEN 'inputsigflag' THEN inputsigflag
WHEN 'lockflag' THEN lockflag
WHEN 'frozenflag' THEN frozenflag
END, 'F') AS 'num'
FROM (
SELECT projectid, periodid, 0 AS periodseq
FROM edm_period
WHERE projectid = p_projectid
AND periodtype = 0
UNION
SELECT projectid, periodid, periodseq
FROM edm_form_status
WHERE (projectid = p_projectid
AND personid = v_personid
AND periodseq > 0
AND formid = 0)
) a
LEFT JOIN edm_form_status b
ON (a.projectid = b.projectid
AND a.periodid = b.periodid
AND a.periodseq = b.periodseq)
WHERE (a.projectid = p_projectid
AND rowid = 0
AND formid > 0
AND a.periodid = v_periodid
AND personid = v_personid)
select count(*) from edm_person where projectid=p_projectid and if(CHAR_LENGTH(p_personcode)>0,personcode=p_personcode,1=1) ;
回答于 2019-09-11 08:43:50
推荐使用group by 可以使用索引,其他方式都是通过函数的方式实现,但是速度会很慢
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |