Sqlsugar的case when语法用于数据统计实战

1.三元运算符方式

//只统计数量,所以固定返回1和0;
var query = Db.Queryable<Orders,Service>((a, b) => new object[] {
                JoinType.Left,a.OrderID==b.OrderID
            });
 var infoDTO = query.Select((a, b) => new ServiceStatusCountDTO
             {
-                ConfirmCount = SqlFunc.AggregateSum(SqlFunc.IIF(a.ServiceStatus== Sea.Enum.OrderFlowStatus.dai_que_ren.GetStringValue(),1,0)),
-                HistoryCount = SqlFunc.AggregateSum(SqlFunc.IIF(a.ServiceStatus == Sea.Enum.OrderFlowStatus.yi_yan_shou.GetStringValue() && b.WarrantyExpiredDate < nowTime, 1, 0))
}).First();

2.if else方式

//此处示例没有else判断,省略了部分
var query = Db.Queryable<Orders,Service>((a, b) => new object[] {
                JoinType.Left,a.OrderID==b.OrderID
            });
var infoDTO = query.Select((a, b) => new ServiceStatusCountDTO
            {
                ConfirmCount = SqlFunc.AggregateSum(SqlFunc.IF(a.ServiceStatus== Sea.Enum.OrderFlowStatus.dai_que_ren.GetStringValue()).Return(1).End(0)),
                CompletedCount = SqlFunc.AggregateSum(SqlFunc.IF(a.ServiceStatus == Sea.Enum.OrderFlowStatus.yi_yan_shou.GetStringValue() && b.WarrantyExpiredDate >= nowTime).Return(1).End(0))
 }).First(); 

3.使用group by代替case when

4. group by和case when 在数据统计时性能上的区别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CASE WHEN语法是一种条件表达式,它可以根据一个或多个条件表达式的结果来返回不同的值。它的基本语法如下: ``` CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` 其中,`condition1`、`condition2`等是要测试的条件表达式,`result1`、`result2`等是与条件表达式对应的结果。如果所有条件表达式都不满足,则返回`default_result`。 例如,以下代码将根据`score`列的值返回不同的评级: ``` SELECT name, score, CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' WHEN score >= 70 THEN 'C' WHEN score >= 60 THEN 'D' ELSE 'F' END AS grade FROM students; ``` 在这个例子中,如果`score`大于等于90,则返回`A`,否则如果`score`大于等于80,则返回`B`,以此类推。如果`score`小于60,则返回`F`。 ### 回答2: case when语法是一种在SQL语句中进行条件判断和赋值的常用语法。它可以根据一个或多个条件判断的结果,返回不同的值或执行不同的操作。 case when语法包含以下几个关键字和语句: 1. case用于声明开始一个case when语句块。 2. when:用于指定条件判断,可以是单个或多个条件。 3. then:当条件判断为真时,执行相应的操作或返回相应的值。 4. else:当所有条件都不满足时,执行相应的操作或返回相应的值。 5. end:表示case when语句块的结束。 case when语法可以嵌套使用,即在then或else中再次使用case when语法,以实现更复杂的条件判断和赋值操作。 使用case when语法可以实现以下几种场景: 1. 根据条件返回不同的值:可以根据某个条件判断的结果,返回不同的值,例如根据用户的年龄段返回相应的等级。 2. 执行不同的操作:可以根据某个条件判断的结果,执行不同的操作,例如根据订单的状态更新相应的库存。 3. 模拟IF-ELSE逻辑:可以使用多个when来模拟多个条件的判断,当所有条件都不满足时,可以使用else来执行默认的操作。 总之,case when语法SQL查询中起到了非常重要的作用,可以根据条件进行判断和赋值,实现更灵活、多样化的查询和操作。 ### 回答3: "case when"是一种SQL语法,可以使用在SELECT语句中,用于根据条件进行条件判断并返回不同的结果。 "case when"语法的一般形式如下: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE result END 其中,condition1、condition2等是可以根据需要添加多个条件判断,result1、result2等是满足相应条件时返回的结果。ELSE子句是可选的,在满足所有条件都不匹配时返回的默认结果。 在使用"case when"语法时,通常需要注意以下几点: 1. "case when"语法是按顺序进行条件判断的,一旦满足条件,即返回相应结果,后面的条件将不再进行判断。 2. "case when"语法可以用于任何数据类型,可以进行任意类型的条件判断。 3. "case when"语法可以嵌套使用,即在result中再次使用"case when"语法。 4. "case when"语法也可以用于简单的数学运算和字符串处理,可以返回计算结果或处理后的字符串。 总之,"case when"是一种常用的SQL语法用于根据条件进行判断和返回结果,可以实现很多复杂的逻辑处理和数据转换。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值