我有一个CriteriaBuilder,我试图在其中获取从1到(LengthOfString-5)的字符。但是,我无法获得所需的输出。下面是我想要的输出。
#if first column is not index
#df = df.set_index('date')
df.index = pd.to_datetime(df.index, dayfirst=True)
df1 = df.resample('MS').agg({'price_chair':'mean','vol_glass':'sum'})
print (df1)
price_chair vol_glass
date
2018-09-01 2.714286 55
2018-10-01 3.000000 20
df2 = df.resample('W').agg({'price_chair':'mean','vol_glass':'sum'})
print (df2)
price_chair vol_glass
date
2018-09-02 2.000000 6
2018-09-09 2.666667 19
2018-09-16 3.500000 20
2018-09-23 2.000000 10
2018-09-30 NaN 0
2018-10-07 3.000000 20
我已经尝试过这种方法,但是我的IDE在(cb.length(root.get(“ code”))-5)下描述了错误。参数类型表达式,“ int”。
select
*
from tbl_job job1_
inner join
tbl_customer customer2_
on job1_.customer_id=customer2_.id
where
job1_.customer_id=customer2_.id
and //
group by SUBSTRING(job1_.code,1,(LENGTH(job1_.code)-5))
这可能是什么原因? 感谢您的帮助。
答案 0 :(得分:1)
创建一个保存减法结果的Expression<Integer>
,并在substring
方法中使用它:
Expression<Integer> lengthMinus5 = cb.sum(cb.length(root.get("code")), -5);
Expression<Integer> one = cb.literal(1);
query.groupBy(cb.substring(root.get("code"), one , lengthMinus5 ));
答案 1 :(得分:0)
尝试检查cb.length(root.get("code"))-5
操作数的类型。
左侧为Expression
,右侧为int
。没有操作员-
对此进行处理。
您必须在表达式中包含计算-5
。