mysql - 如何在 SQL 查询的计算中使用 IF 语句
问题描述
我使用以下查询给我我们的销售代理赚取的佣金。
SELECT * FROM
(SELECT agent,
COUNT(*) as sales,
(4*(SELECT COUNT(*)
FROM Sales Sales2
WHERE Sales2.agent=Sales.agent AND finalized_at BETWEEN '2020-11-01 00:00:00' AND '2020-11-27 23:59:59' AND flow=117))
/
(SELECT SUM(uren) FROM Uren WHERE datum BETWEEN '2020-11-01 00:00:00' AND '2020-11-27 23:59:59' AND agent=Sales.agent) as sph
FROM Sales
WHERE finalized_at BETWEEN '2020-11-27 00:00:00' AND '2020-11-27 23:59:59' AND flow=117
GROUP BY agent ) r
ORDER BY sales * sph desc;
现在我希望输出按(sales * sph * factor)
. 如果因子为 10 sph > 1.5
,否则为 7.5。
是否可以在查询中实现这一点。如果是,我该如何实现?
如果计算将在SELECT
语句中完成(sales * sph * factor) as commission
,然后只使用SORT BY commission
.
我希望我的问题有意义。
解决方案
您可以按顺序使用条件,例如使用 case when
SELECT *
FROM (
SELECT agent,
COUNT(*) as sales,
(4*(SELECT COUNT(*)
FROM Sales Sales2
WHERE Sales2.agent=Sales.agent AND finalized_at BETWEEN '2020-11-01 00:00:00' AND '2020-11-27 23:59:59' AND flow=117))
/
(SELECT SUM(uren) FROM Uren WHERE datum BETWEEN '2020-11-01 00:00:00' AND '2020-11-27 23:59:59' AND agent=Sales.agent) as sph
FROM Sales
WHERE finalized_at BETWEEN '2020-11-27 00:00:00' AND '2020-11-27 23:59:59' AND flow=117
GROUP BY agent ) r
ORDER BY sales * sph * (case when sph > 1.5 then 10 else 7.5 end ) desc;
推荐阅读
- java - 如何让 JButton 知道它在哪个面板上被点击?
- python-3.x - Python - 数据框url解析问题
- javascript - 用替换的变量打印 mathjs 表达式
- java - Apache2 代理错误:从远程服务器读取错误
- node.js - 运行 npm install 时 JSON 输入意外结束
- html - 媒体查询问题:调整大小/移动块
- python - 在分析 csv 文件中的数据(平均值、中位数、众数等)时需要帮助
- powershell - 如果 & 号命令失败,如何自动停止 powershell。示例: & $cmd # 现在它失败了
- sql - 连接失败 - 定义必须采用 SELECT 语句的形式
- r - 分隔逗号分隔值不同行