示例sql如下
select col1,col2,col3,count(*)
from table1 t1
join table2 t2 on t1.col1 = t2.col1
where 1=1
group by col1,col2,col3
这里是整体数量count,当有一个col4,以它的值为分组条件进行分组,一般情况下,应为
select col1,col2,col3,,col4,count(*)
from table1 t1
join table2 t2 on t1.col1 = t2.col1
where 1=1
group by col1,col2,col3,col4
这样求整体和求分组只能通过两条sql查询,且想将col4多个值为一组时还需要额外操作,比较麻烦
我修改如下
select col1,col2,col3,
--总条数
count(1),
--排除col4为1,2的数据条数
count((col4=1||col4=2)&&null),
--col4为1时的数据条数
count((col4!=1)&&null),
--col4为2的数据条数
count((col4!=2)&&null),
--col4小于等于2的数据条数
count((col4>2)&&null),
from table1 t1
join table2 t2 on t1.col1 = t2.col1
where 1=1
group by col1,col2,col3,col4
tips:
使用mybatis的xml编写sql时,请将【&&】替换为【&&】
count函数,参数为null时不加1
短路与,短路或,参考js语法