gpt4 book ai didi

具有一系列值的 MySQL 和 CASE WHEN

转载 作者:IT老高 更新时间:2023-10-28 23:49:02 25 4
gpt4 key购买 nike

我有一个帐户表和一个记录表,其中帐户有多个记录。我想按“记录数”范围分割帐户总数。 IE。显示分割

Count of Records | Count
=========================
0-25 | 100
25 - 50 | 122
50 - 100 | 300

等等

我正在使用以下查询,但我无法将它按我想要的“grp”分组,对修改查询的最佳方式有任何帮助吗?

SELECT count(*) as ct,
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+'
END AS grp
FROM records r,accounts a
WHERE r.account_id=a.id
ORDER BY ct

最佳答案

试试这个:

SELECT count(*) as ct, 
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+'
END AS grp
FROM records r, accounts a
WHERE r.account_id=a.id
GROUP BY r.account_id, a.id,
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+' END
ORDER BY count(*)

您必须“定义”您希望将原始数据行聚合到的“桶”...这就是 Group By 子句的用途...它定义了基表中每一行的标准被分析以确定它的数据将被聚合到哪个“桶”中...... group by 子句中定义的一个或多个表达式是这些桶的“定义”。

当查询处理原始数据行时,此表达式的值与现有存储桶相同的任何行都会聚合到该存储桶中...任何具有未表示值的新行由现有的存储桶导致创建一个新的存储桶......

关于具有一系列值的 MySQL 和 CASE WHEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2913177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com