【问题标题】:Group by Range SQL Server按范围分组 SQL Server
【发布时间】:2015-04-28 21:19:10
【问题描述】:

更新!!!!

我使用其各自的输出构建了以下 SQL 查询:

我想有效地为每个聚合添加标签,如下所示:

coupon percent   |   income level
-----------------------------------
 .023434355      |   0-20000
 .054888999      |   20000-35000
 .010000002      |   35000-100000

有什么建议吗?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以将CASE 语句添加到您的GROUP BY 类似

    GROUP BY CASE 
        WHEN storeAvgIncome <= 20000 THEN '0-20000' 
        WHEN storeAvgIncome > 20000 AND storeAvgIncome <=  35000 THEN '20000-35000' 
        WHEN storeAvgIncome > 35000 AND storeAvgIncome <= 100000 THEN '35000-100000'
        END
    

    然后将其添加到您的SELECT

    SELECT 
        CASE 
            WHEN storeAvgIncome <= 20000 THEN '0-20000' 
            WHEN storeAvgIncome > 20000 AND storeAvgIncome <=  35000 THEN '20000-35000' 
            WHEN storeAvgIncome > 35000 AND storeAvgIncome <= 100000 THEN '35000-100000'
            END AS [income level]
    

    【讨论】:

    • 脚注:只要你的CASE声明does not contain an aggregate function就可以了。
    • 在看到您的回复之前,我实际上已经走得更远了。现在我已经在 case 语句中设置了范围,如何让实际范围本身显示为如上所述的有效行标签?我不能简单地将 dimStore.storeAvgIncome 添加到 select 语句中,那么如何让我的 case 语句然后值显示在相应的行中?
    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2012-02-04
    相关资源
    最近更新 更多