数据库中营收首数字出现次数统计与分布排序实现求助
营收首数字分布统计实现方案
核心逻辑步骤
- 计算单条记录营收:通过
单价 * 数量得到每条销售的营收金额 - 提取首数字:处理营收为正的情况,截取数值的第一个有效数字
- 统计排序:按首数字分组统计出现次数,再按次数从多到少排序
通用SQL示例(以MySQL为例)
假设你的销售记录表名为sales,单价字段为unit_price,数量字段为quantity,执行以下SQL即可得到预期结果:
SELECT CAST(SUBSTRING(CAST(ABS(unit_price * quantity) AS CHAR), 1, 1) AS UNSIGNED) AS first_digit, COUNT(*) AS occurrence_count FROM sales WHERE unit_price * quantity != 0 -- 排除营收为0的无效记录 GROUP BY first_digit ORDER BY occurrence_count DESC;
不同数据库适配说明
- PostgreSQL:替换首数字提取部分为
LEFT(ABS(unit_price * quantity)::TEXT, 1)::INT - SQL Server:替换首数字提取部分为
CAST(LEFT(CAST(ABS(unit_price * quantity) AS VARCHAR(20)), 1) AS INT)
结果说明
执行后会得到两列数据:first_digit(营收首数字)和occurrence_count(对应出现次数),结果按出现次数降序排列,与预期示意图一致。
内容的提问来源于stack exchange,提问作者lala
相关产品推荐
相关产品推荐

