• sql server 按照区间进行分组的两种语法


    一、按照区间进行分组

    select CASE  
        WHEN a.Commission>0 and a.Commission<10 THEN
            '[0-10]'
            WHEN a.Commission>10 and a.Commission<20 THEN
            '[10-20]'
            WHEN a.Commission>20 and a.Commission<30 THEN
            '[20-30]'
            WHEN a.Commission>30 and a.Commission<50 THEN
            '[30-50]'
        ELSE
            '[50]'
    END  as 'Price',sum(a.ClickNum) ClickNum,count(b.productId) AskNum,sum(if(OrderState=11,1,0)) FinishNum,Round(sum(if(OrderState=11,1,0))/if(count(b.productId)=0,1,count(b.productId)),2)*100 TestFinishNum,Round(sum(if(ConmmentSate=2,1,0))/if(count(b.productId)=0,1,count(b.productId)),2)*100 CommentChance  from fksd_product a left join fksd_commentorder b on a.Id=b.ProductId where a.IsDelete!=10 
    GROUP BY CASE  
        WHEN a.Commission>0 and a.Commission<10 THEN
            '[0-10]'
            WHEN a.Commission>10 and a.Commission<20 THEN
            '[10-20]'
            WHEN a.Commission>20 and a.Commission<30 THEN
            '[20-30]'
            WHEN a.Commission>30 and a.Commission<50 THEN
            '[30-50]'
        ELSE
            '[50]'
    END ;

        二、第二种比较蠢的方式,具体实现如下:

     select 0-3" f1,cnt 数量 from (
    select count(*) cnt fromwhere 字段>=0 and 字段<=3 
    ) a
    union all
     select "4-6" f1,cnt 数量 from (
    select count(*) cnt fromwhere 字段>=4 and 字段<=6
    )b
    union all
     select "7-10" f1,cnt 数量 from (
    select count(*) cnt fromwhere 字段>=7 and 字段<=10 
    ) c
  • 相关阅读:
    hdu 5696 区间的价值 单调栈+rmq
    bzoj 3039: 玉蟾宫 单调栈或者悬线法求最大子矩阵和
    bzoj 2435: [Noi2011]道路修建 dfs
    Codeforces gym 100971 D. Laying Cables 单调栈
    codeforces GYM 100971F 公式题或者三分
    UVA 10539
    BZOJ 1079: [SCOI2008]着色方案 DP
    UVA 11426
    UVA 11728
    UVA 10090
  • 原文地址:https://www.cnblogs.com/wangjinya/p/12096188.html
Copyright © 2020-2023  润新知