今年大学刚毕业,刚上班的时候就分配了一个很艰巨的任务——用 birt做报表,我对报表连个概念都没有,别的同事教了一下我,后来发现,最主要的就是写SQL,写好SQL后其他的就拖一下就行了,但是SQL真的很复杂,像我这种没做过什么大项目,技术就一般的人来说,写起来好困难。想了好久都没有想出来,后来还是问了一下别人,人家一下子就弄出来了,顿时感觉很崇拜。
主要写的内容如下图,统计每个小组成员选“是”的总数和选“否”的总数。别的不说了,直接公布答案了
先根据小组进行分组,然后可以使用聚合函数sum,sum里面嵌套case when。
select 组别, sum(case when是否选择=’是’ then 1 else 0 end) as 选择是的总数,
sum(case when 是否选择=’否’ then 1 else 0 end ) as 选择否的总数
group by 组别;
SQL语句没有经过测试,只是根据当时写的回忆了一下,但是思路是正确的
当统计“是”的总数时,把该列选“是”的置为1,其余为0,然后进行sum求和。
表结构比下图复杂的多,下图只是做了个例子
组别 | 成员 | 是否选择 |
小组A | 成员A | 是 |
成员B | 否 | |
成员C | 弃权 | |
小组B | 成员D | 是 |
成员E | 弃权 | |
成员F | 是 | |
成员G | 否 |