比如table种有status,name两个字段,我现在需要统计到所有status=2的个数和status = 2的个数但是按name分组统计,请问有我们办法用一条sql查出来么
问题描述错了,是所有status=2的个数和status != 2的
以时间为跨度统计不同的值,在该时间出现的次数。
语言如下:
select count(*),'列名' from tablename group by '列名'
select count(*),a_yqm from user group by a_yqm
举例:
这里,我要查询出1年内每个月份periods字段不同值的次数。
比如下图中可见的2015-4月,periods为2出现了3次,3出现了1次,最关键的是 periods你不知道有多少种可能的值,也许这个月有1,也许没有。
这样不行,还有这样里面会统计出status != 2 的数据么
追答你说的是=2和不等于2的个数,哎,大哥我写答案的时候你还没修改问题描述吧,不好用这种质问的口气吧,这样不好。写法不难,自己加油吧。
本回答被网友采纳问题描述错了,是所有status=2的个数和status != 2的个数
追答select name,
sum(case when status=2 then 1 else 0 end ),
sum(case when status2 then 1 else 0 end )
from table
group by name
SELECT
COUNT(*) AS 总数,
SUM(CASE WHEN create_time < '2018-01-01 00:00:00' THEN 1 ELSE 0 END) AS 年前数据总量,
SUM(CASE WHEN create_time > '2018-01-01 00:00:00' THEN 1 ELSE 0 END) AS 年后数据总量,
FROM
T_YEAR
(create_time > '2018-01-01 00:00:00') 是查询的条件 用法同 WHERE一致