Group By两列字段时如何将组合的两个字段以表的形式给出
来源:互联网 发布:阿里云大厦 部门 编辑:程序博客网 时间:2024/05/18 00:06
不废话,先上图,下面是我的数据源。
现在希望按B和C来组合分类,期望的结果是下面的。
-----------------------------------------------------------我是分隔君---------------------------------------------------------
对应需要对两个字段进行组合分类,最容易想到的方式就是将B和C两个字段直接放到Group By后面就可以了,例如使用SQL1语句,得到下图。
-----------------------------------------------------------我是分隔君---------------------------------------------------------
但是前面我们也说了,我们想要的是B和C的组合的笛卡尔结果能以列表个形式展示出来。那么怎么办呢?这个时候最容易想到的是用临时的结果,在临时表之上二次查找,如SQL2所示。那么就可以得到下面的结果。
-----------------------------------------------------------我是分隔君---------------------------------------------------------
SQL2解决了问题,但是现实很笨拙,对表扫描了两次,有什么方法可以一次解决呢?是有的,如SQL3所示,这里用到了case when。得到的结果如下。
但是其实case when貌似只能用在sum函数里面的时候,最后的Group By才对sum内部的数据才起作用。avg和count都不行,本质的原因不知道,但是avg和count都与计数有关,估计计数的函数内部是不敏感Group By后面的字段的。
-----------------------------------------------------------我是分隔君---------------------------------------------------------
sql列表
SQL1:Select sum(D)/sum(E),B,C from test.newrain group by B,C
SQL2:
Select t1.C1,t2.C2,t1.Bi from
(select sum(D)/sum(E) as C1, B as Bi from test.newrain where C=1 and F=3 group by B)t1,
(select sum(D)/sum(E) as C2, B as Bi from test.newrain where C=2 and F=3 group by B)t2
where t1.Bi=t2.Bi;
SQL3:
SELECT
sum(case when C=1 then D else 0 end)/sum(case when C=1 then E else 0 end) as C1,
sum(case when C=2 then D else 0 end)/sum(case when C=2 then E else 0 end) as C2,B
from test.newrain where F=3
group by B
- Group By两列字段时如何将组合的两个字段以表的形式给出
- MySql,Group by两列,笛卡尔集以表的形式给出
- group by两个或多个字段的举例用法
- 将SQL语句以字符串的形式,insert到表的一个字段中
- timestamps 字段按天去group by的写法
- oracle select非group by的字段
- 拆分数据库字段中字符串,以表的形式返回
- 将文件以Byte形式读入,以插入SQL数据库的字段中.
- Java中如何将以byte数组给出的数据转换为double数组形式
- hive:(group by, having;order by)的使用;group by+多个字段,以及wiki说的group by两种使用限制验证
- hive:(group by, having;order by)的使用;group by+多个字段,以及wiki说的group by两种使用限制验证
- MySql分组查询(group by)并计算对应的字段之和及两个字段相乘之后的和
- sql 查询字段 两个字段以一个字段的形式显示 + 同属一个组的 在一个行列中显示出来 以逗号分隔
- 将表中子字段的值按主字段分组后以空格连接作为一个字段
- 解决group by出来的字段既需要有作为列字段的又需要有作为行字段的报表问题
- MySQL group by后的结果将每组某VARCHAR字段字符串连接起来
- mysql group by分组,根据一个字段分组 ,又想得到另一个字段的最大或者最小。如何解决。
- 如何展现字段名和值均以字符串形式保存到第三方表的数据集
- bitset用法整理
- CSS布局之BFC
- software test homework2
- 九度OJ-1004:Median
- HDU1408 盐水的故事
- Group By两列字段时如何将组合的两个字段以表的形式给出
- 数据库与数据库管理系统
- Catch That Cow
- 2017.3.2
- Insert into a Cyclic Sorted List
- 关于Android开发界面设计之去掉标题栏的方法
- 51nod-1191 消灭兔子(贪心)
- 数据库和表结构得一些基本常用命令总结
- python中base64模块的加解密函数