GROUP BY hi.descriptions
可能难点还有集合内求和,用于求结果集中同类和
select sum(alias.assemble_qty) over (partition by alias.WORKCELL_ID)
from EMT_ISSUE_PROCESS_ACT alias
where 1 = 1;
上面的是group by的常用用法,接下来就简单说一下她的一些升级用法,集体什么效果就不一一贴图示呢,想要知道效果,还是得自己尝试,毕竟经过自己手的东西,才有可能成为自己的东西,简单说完升级用法,再来仔细说我想要说的加点料,因为除了特殊料之外,其他的很多人都已经做过了,并且很多人也吃过了。
-
在Group By 中使用Rollup 产生常规分组汇总行 以及分组小计:
Group By Rollup(字段A,字段B),Rollup 后面跟了n个字段,就将进行n+1次分组,从右到左每次减少一个字段进行分组;然后进行 union
-
在Group By 中使用Cube 产生Rollup结果集 + 多维度的交叉表数据源:
Group By Cube(字段A,字段B), Cube 后面跟了n个字段,就将进行2的N次方的分组运算;然后进行 union
除此之外还有GROUPING函数和Grouping Set方法,这两个用的相对较少,前一个是看行列分组情况的,后一个可以代替多次union,需要详细了解的可以去其他地方看看,这里就 不多做解释了,原谅博主的懒。。。
接下来说一下关于料的问题,先上一张图吧。
看这个图,不知道你有没有闪过一些实现的思路。。。
这里对图示内容解释一下吧,看第一列值,可以看出,这是一个排序后的结果,而第二列则是第一列分组求和的数值。这里可能大家就会有疑问了,分组求和后,相同的列不是会何并,然后在对应的行列得到一个求和值吗?这里怎么不是这样的。正因为不是这样,所以这才是真正的料。下面就给大家看看实现的具体sql吧。
WITH item AS
(SELECT t.descriptions,
WHEN t.qty < 0 THEN
t.qty
END qty,
rownum seq
FROM (SELECT hi.descriptions, -rownum qty
FROM hcm_items hi
WHERE hi.items_code = 'test'
UNION
SELECT hi.descriptions, SUM(hi.qty) qty
FROM hcm_items hi
WHERE hi.items_code = 'test'
GROUP BY hi.descriptions) t)
SELECT tab.descriptions, tab.qty
FROM item tab
WHERE tab.seq NOT IN (SELECT t.seq - 1 FROM item t WHERE t.qty IS NOT NULL)
ORDER BY tab.descriptions, tab.qty;
看了sql,先给科普一下别的一点知识,然后再一点点解释一下这句sql。
- UNION: 去除重复记录
- UNION ALL : 保留重复记录
- INTERSECT: 取交集
- MINUS: 取差集
接下来我就按照这句sql的大体执行顺序来解释一下这句sql吧。我们可以注意到,第一部分执行的sql是由union来合并的两个数据集合,第一个集合很简单,就是将对应数据查出来,需要注意的是,数值列数取的rownum的负值,而第二个数据集合是取的分组求和结果集。接下来第二层就是将非求和值的负值清空,将这样的结果集用with as语句定义为一个子查询部分。最后再将这样的结果去掉汇总行的前一行,然后排序,便能得到这样一个特别的准确的结果。
或许这不是一个最好的办法,但是也是实现这个效果的一个思路,有思路便能类推,解决更多的问题。。。如有道友有更好的思路,还望告知,谢谢
对于编程人员的我们来说,写sql应该是不可避免的,要写sql,那么group by肯定也就再熟悉不过了,over可能用的也不少。无论是取最大值或求和等操作,我们一般都会用到这些语句,既然是如此常用的语句,那我们就一起来看看它的一些用法吧。知识无极限,与你来相见,欢迎点赞支持!
Oracle中group by用法
在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,在用分组时使用聚组函数返回的是每一个组的汇总信息。列 :select o.customer_no customer_no,count(o.customer_no) as total
,sum(o.amount) as tot
当我们刚开始学Oracle时,见到group by,常常会来个三连问:为什么要用group by?group by应该怎么用?为什么写了group by运行时会提示“不是单组分组函数;不符合group by语法”?面对这些问题,我都胆战心惊了(怎么可能)。接下来我将把group by的心经要诀传授给你们,是不是很激动鸭,那就拿起你们的小本本记下来吧(收藏点赞+关注哦)。
何为group by
group by即分组
如何用group by
group by语法:
在select语句的一般格式中就有group by语句,group
by语句一般放在where语句的后面,若有having子句,则放
2015年4月9日 天气冷表gw_log设计如下:Name Type Nullable Default Comments
------------ ------------- -------- ------- ----------
ID VARCHAR2(50) 消息id
SERVICE_ID
DEPT_DISTINGUISH_NAME ,
SUM(TOTAL_PAY_SUM_R_LDC) TOTAL_PAY_SUM_R_LDC ,
SUM(BASE_PAY_R_LDC) BASE_PAY_R_LDC FROM PA_SUMMARY_B04
WHERE PA_MONTH='201509'
over函数的参数:over(partition by columnname1 order by columnname2)
含义,按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。
例如:employees表中,有两个部门的...
在 Oracle 中,可以使用 GROUP BY 子句和聚合函数来实现分组求和。
例如,假设你有一个名为 orders 的表,其中包含订单信息,包括订单金额(amount)和订单日期(order_date)。你想要按照订单日期对订单金额进行分组求和,可以使用以下 SQL 语句:
SELECT order_date, SUM(amount)
FROM orders
GROUP BY order_date;
这将返回按照订单日期分组求和后的订单金额总和。你可以根据需要使用其他聚合函数(如 COUNT、AVG、MAX 或 MIN)来计算其他统计数据。
//设置列宽自适应标题
var grid=parm.sender;
for (let index = 0; index < grid.columns.length; index++) {
const element = grid.columns[index];
grid.autoFitColumn(index);
Kendo UI Grid 用法详细整理
琳妹妹的辉哥哥:
Kendo UI Grid 用法详细整理
琳妹妹的辉哥哥: