MySQL GROUP BY CASE 错误

2024-01-07

我正在尝试使用 GROUP BY CASE 语句来量化我的查询输出。 我在 SELECT 部分、GROUP BY 部分以及两者中都尝试了 CASE,但仍然得到“错误代码:1111。组功能使用无效。”

这是我的代码(两个部分都有 CASE)

SELECT 
case when BBsum.sum <= 9999 then '<10K'
    when BBsum.sum <= 10999 then '<11K'
    when BBsum.sum <= 11999 then '<12K'
    when BBsum.sum <= 12999 then '<13K'
    when BBsum.sum <= 13999 then '<14K'
    when BBsum.sum <= 14999 then '<15K'
    when BBsum.sum <= 15999 then '<16K'
    when BBsum.sum <= 16999 then '<17K'
    when BBsum.sum <= 17999 then '<18K'
    when BBsum.sum <= 18999 then '<19K'
    when BBsum.sum <= 19999 then '<20K'
    else '20K+' end as sum, 
avg(sum(CASE when C.finance_type = 'INSTALLMENT_LOAN' then C.paid_amount end)/sum(CASE when C.finance_type = 'INSTALLMENT_LOAN' then C.initial_amount end)) as IL_RR,
avg(sum(CASE when C.finance_type = 'PAYDAY_LOAN' then C.paid_amount end)/sum(CASE when C.finance_type = 'PAYDAY_LOAN' then C.initial_amount end)) as PDL_RR,
avg(sum(C.paid_amount)/sum(C.initial_amount)) as RR
FROM 
credit C
left join (select BB.borrower_id id, sum(BB.points) sum from borrower_bonus BB
where BB.type = 'CHARGE'
group by bb.borrower_id) BBsum on C.borrower_id = BBsum.id
where C.status IN ('EXPIRED', 'COMPLETED','SOLD')
group by case when BBsum.sum <= 9999 then '<10K'
    when BBsum.sum <= 10999 then '<11K'
    when BBsum.sum <= 11999 then '<12K'
    when BBsum.sum <= 12999 then '<13K'
    when BBsum.sum <= 13999 then '<14K'
    when BBsum.sum <= 14999 then '<15K'
    when BBsum.sum <= 15999 then '<16K'
    when BBsum.sum <= 16999 then '<17K'
    when BBsum.sum <= 17999 then '<18K'
    when BBsum.sum <= 18999 then '<19K'
    when BBsum.sum <= 19999 then '<20K'
    else '20K+' end
order by sum DESC

我怀疑我必须做一些更简单的事情才能实现我想要的(将 RR 平均值除以收到的奖金组)


您正在嵌套聚合函数,MySQL 不允许这样做。

这可能就是您想要的:

SELECT 
case when BBsum.sum <= 9999 then '<10K'
    when BBsum.sum <= 10999 then '<11K'
    when BBsum.sum <= 11999 then '<12K'
    when BBsum.sum <= 12999 then '<13K'
    when BBsum.sum <= 13999 then '<14K'
    when BBsum.sum <= 14999 then '<15K'
    when BBsum.sum <= 15999 then '<16K'
    when BBsum.sum <= 16999 then '<17K'
    when BBsum.sum <= 17999 then '<18K'
    when BBsum.sum <= 18999 then '<19K'
    when BBsum.sum <= 19999 then '<20K'
    else '20K+' end as sum, 
sum(CASE when C.finance_type = 'INSTALLMENT_LOAN' then C.paid_amount end)
   /sum(CASE when C.finance_type = 'INSTALLMENT_LOAN' then C.initial_amount end) as IL_RR,
sum(CASE when C.finance_type = 'PAYDAY_LOAN' then C.paid_amount end)
   /sum(CASE when C.finance_type = 'PAYDAY_LOAN' then C.initial_amount end) as PDL_RR,
sum(C.paid_amount)/sum(C.initial_amount) as RR
FROM 
credit C
left join (
    select BB.borrower_id id, sum(BB.points) sum 
    from borrower_bonus BB
    where BB.type = 'CHARGE'
    group by bb.borrower_id
) BBsum on C.borrower_id = BBsum.id
where C.status IN ('EXPIRED', 'COMPLETED','SOLD')
group by case when BBsum.sum <= 9999 then '<10K'
    when BBsum.sum <= 10999 then '<11K'
    when BBsum.sum <= 11999 then '<12K'
    when BBsum.sum <= 12999 then '<13K'
    when BBsum.sum <= 13999 then '<14K'
    when BBsum.sum <= 14999 then '<15K'
    when BBsum.sum <= 15999 then '<16K'
    when BBsum.sum <= 16999 then '<17K'
    when BBsum.sum <= 17999 then '<18K'
    when BBsum.sum <= 18999 then '<19K'
    when BBsum.sum <= 19999 then '<20K'
    else '20K+' end
order by sum DESC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL GROUP BY CASE 错误 的相关文章

  • 在同一个表上组合两个 SQL SELECT 语句

    我想结合这两个 SQL 查询 SELECT FROM Contracts WHERE productType RINsell AND clearTime IS NULL AND holdTime IS NOT NULL ORDER BY g
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 获取查询的行号

    我有一个查询将返回一行 当表排序时 有什么方法可以找到我正在查询的行的行索引吗 我试过了rowid但当我期待第 7 行时却得到了 582 Eg CategoryID Name I9GDS720K4 CatA LPQTOR25XR CatB
  • 执行许多插入重复键更新错误:未使用所有参数

    所以我一直在尝试使用 python 2 7 15 使用 mysql connector 执行此查询 但由于某种原因 它似乎不起作用并且总是返回错误 并非所有参数都被使用 表更新有一个主键 即 ID 这是我尝试运行此 SQL 的查询 sql
  • Pandas:按日历周分组,然后绘制真实日期时间的分组条形图

    EDIT 我找到了一个非常好的解决方案并将其发布在下面作为答案 结果将如下所示 您可以为此问题生成一些示例数据 codes list ABCDEFGH dates pd Series pd date range 2013 11 01 201
  • 将列的值添加到 LIKE 语句中?

    我有 3 个标签表 标签类别和使用过的标签 我想要获取所有标签的列表以及已使用标签的计数 所使用标签的格式是每个具有标签的文档 ID 的逗号分隔值 我一直在尝试类似的方法 但无法将tags tag 字段的值插入到LIKE 语句中 SELEC
  • 在 MySQL 中分割逗号分隔值

    我正在尝试将字符串中以逗号分隔的 值拆分为多列 样本数据 COL1 COL2 COL3 000002 000003 000042 09 31 51 007 004 007 预期输出 Pno Cno Sno 000002 09 007 000
  • 从存储过程中的动态 SQL 获取结果

    我正在编写一个存储过程 需要在过程中动态构造 SQL 语句以引用传入的表名称 我需要让这个 SQL 语句返回一个结果 然后我可以在整个过程的其余部分中使用该结果 我尝试过使用临时表和所有内容 但我不断收到一条消息 提示我需要声明变量等 例如
  • php 崩溃后 mysql 表被锁定

    我有一个 MySQL DB 和一个 innoDB 表 我有一个 php 页面 用于连接 锁定表 进行一些更新 然后解锁表 PHP 页面通过 wamp 与 apache 一起提供 php页面将文件上传到数据库 我决定通过上传一个大小大于分配给
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • 物理写入文件已满 - mysql 错误

    我正在使用xampp 每次启动mysql时 我都会在xampp中收到以下错误 Error MySQL shutdown unexpectedly 13 16 14 mysql This may be due to a blocked por
  • Sql:计算随时间的增长

    我几周前发布了这个问题 但我认为我没有清楚地提出这个问题 因为我得到的答案不是我想要的 我认为最好重新开始 我正在尝试查询数据库以检索一段时间内唯一条目的数量 数据看起来像这样 Day UserID 1 A 1 B 2 B 3 A 4 B
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • Postgres、更新和锁定顺序

    我正在研究 Postgres 9 2 有 2 个更新 每个更新都有自己的事务 一个看起来像 UPDATE foo SET a 1 WHERE b IN 1 2 3 4 另一个也类似 UPDATE foo SET a 2 WHERE b IN
  • 数据表 - 服务器端处理 - 数据库列合并

    我目前正在使用 DataTables 1 10 5 服务器端处理功能 http www datatables net examples data sources server side html http www datatables ne
  • Clojure MySQL 语法错误异常(“[...] 靠近 '???????????????' [...]”)

    除了建立连接之外 我在使用 clojure contrib sql 做任何事情时都遇到困难 我有一个 mysqld 在 localhost 3306 上运行 数据库名为clj db 用户 clj user localhost 和密码 clj
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • 将多行合并为一行并根据行数附加列

    我正在尝试将同一个表的多行合并为一个 我有一个像这样的示例表 Col1 Col2 Col3 Col4 Col5 Col6 1 BH1 CB 12 CC CC Conveyor Mal 1 BH1 CB 104 ZC ZC Full Emp
  • 从一个sql服务器选择到另一个sql服务器?

    我想将一台服务器 Data Old S1 中的一个表 T1 在 DB1 中 中的数据选择到另一台服务器 Data Latest S2 中的另一个表 T2 在 DB2 中 中的数据 我怎样才能做到这一点 请注意服务器的命名方式 查询也应该考虑

随机推荐