sql - 在sql数据库中找到2列之间的值的不同和力量
问题描述
我只是在新项目中工作,我需要进行一些数学运算并在我的数据库中的 2 列之间进行比较,在我的数据库中,我有 2 个表(before_process)和(after_process)它们都有列名(doc_num),这个doc_num in(before_process 表有一些值),但是在处理时值会有所不同:
我的代码:
SELECT befor_process.SYS_ID,
befor_process.st_id,
after_prcoess.file_name,
after_prcoess.FORM,
COUNT(*) AS DB_ST,
COUNT(befor_process.doc_num) AS DB_ZS
FROM log_table after_prcoess
INNER JOIN status_table befor_process
ON after_prcoess.doc_num = befor_process.doc_num
WHERE after_prcoess.FORM IS NOT NULL
AND befor_process.STATUS = 100
AND after_prcoess.doc_num NOT IN
( SELECT doc_num FROM status_table WHERE STATUS >= 101
)
GROUP BY befor_process.SYS_ID,
befor_process.st_id,
after_prcoess.file_name,
after_prcoess.FORM
ORDER BY befor_process.SYS_ID,
befor_process.st_id;
我的 query_result 将是:
但所需的结果是(如果 2 个值等于或双倍于 after_process 表中的值将为空,但如果超过双倍,它将给出结果,如下图所示:
解决方案
我认为您想要的逻辑表示为:
(case when COUNT(*) > 2 * COUNT(befor_process.doc_num)
then 2 * COUNT(befor_process.doc_num) - COUNT(*)
end) as result
我唯一的困惑是COUNT(befor_process.doc_num)
永远不能大于COUNT(*)
,但你的问题暗示这是这样的。也许列别名在问题中是倒退的。
推荐阅读
- c# - 开关盒没有变化
- php - 使用imagemagick显示pdf文件预览图片报错
- ios - iOS Swift VideoToolBox 解压帧 EXC_BAD_ADDRESS 错误
- kotlin - 如何使用核心库中提供的运算符递归生成 RxJava Flowable?
- javascript - 在 express js 服务器中使用节点应用程序
- python - 如何跳过一个标签并移动到下一个标签 - 使用 python 抓取网页
- html - HTML 可折叠按钮 - 如何将按钮突出显示为 href?
- apache-spark - 为什么 Spark RDD 为小数据保留更多数量的分区
- android - 如何将项目添加为依赖项?
- ios - 在 swift 5 中从另一个 tableview 控制器调用 tablview 控制器