如何编写SQL查询实现订单数量按指定面额拆分统计?
实现逻辑
按指定单位从大到小依次计算:每级单位的数量是当前剩余值除以单位的整数部分,剩余的余数继续参与下一级更小单位的计算即可。
兼容MySQL/PostgreSQL/SQL Server的SQL语句
SELECT order_id, qty, FLOOR(qty / 20) AS `20`, FLOOR((qty % 20) / 5) AS `5`, FLOOR(((qty % 20) % 5) / 3) AS `3`, ((qty % 20) % 5) % 3 AS `1` FROM 你的表名;
Oracle适配版本
Oracle需用MOD函数处理取模运算:
SELECT order_id, qty, FLOOR(qty / 20) AS "20", FLOOR(MOD(qty, 20) / 5) AS "5", FLOOR(MOD(MOD(qty, 20), 5) / 3) AS "3", MOD(MOD(MOD(qty, 20), 5), 3) AS "1" FROM 你的表名;
代入你提供的测试数据运行,输出结果和你要求的统计效果完全匹配。
内容的提问来源于stack exchange,提问作者adaadaaja loe
相关产品推荐
相关产品推荐

