mysql 查询结果出现错误,case when 语句的使用。请问语句是有什么错误吗,最后的状态应该是待机,为什么是运行?
1条回答 默认 最新
- 吃不了席 2024-08-22 17:03关注
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
首先,我们需要对提供的查询语句进行格式化和整理,以便更好地理解其结构和逻辑。以下是整理后的查询语句:
WITH linshi AS ( SELECT dbtime, CASE WHEN 五分厂5号挤压机电流 = '停机' THEN '停机' ELSE '待机' END AS 五分厂5号挤压机, LAG(五分厂5号挤压机, 5) OVER (ORDER BY dbtime) AS 10mi, LAG(五分厂5号挤压机, 10) OVER (ORDER BY dbtime) AS 20mi, LAG(五分厂5号挤压机, 15) OVER (ORDER BY dbtime) AS 30mi FROM wfcshebeiyunxingdianliu ), temp_table AS ( SELECT dbtime, 五分厂5号挤压机电流, 五分厂5号挤压机, 10mi, 20mi, 30mi, CASE WHEN 五分厂5号挤压机 = '关机' THEN '关机' WHEN 五分厂5号挤压机 = '待机' AND LAG(五分厂5号挤压机, 15) OVER (ORDER BY dbtime) = '待机' AND LAG(五分广5号挤压机, 10) OVER (ORDER BY dbtime) = LAG(dbtime, 5) OVER (ORDER BY dbtime) AND dbtime = LAG(dbtime, 5) OVER (ORDER BY dbtime) THEN '待机' ELSE '运行' END AS 5号状态 FROM linshi ) SELECT * FROM temp_table;
从整理后的查询语句中,我们可以看到主要的逻辑如下:
-
首先,我们使用
WITH
语句创建了一个临时表linshi
,在这个表中,我们根据五分厂5号挤压机电流
的值来判断五分厂5号挤压机
的状态('停机'或'待机'),并计算了10mi
、20mi
和30mi
这三个滞后值。 -
然后,我们创建了另一个临时表
temp_table
,在这个表中,我们根据五分厂5号挤压机
的状态以及滞后值来判断5号状态
。如果五分厂5号挤压机
为'关机',则5号状态
为'关机';如果五分厂5号挤压机
为'待机',且满足一系列滞后值条件,则5号状态
为'待机';否则,5号状态
为'运行'。 -
最后,我们从
temp_table
中查询所有记录。
根据提供的数据,我们可以看到在大部分情况下,
5号状态
的值为'待机',但在有些情况下,它的值为'运行'。这可能是因为在判断5号状态
时,没有满足'待机'的条件,所以默认为'运行'。为了解决这个问题,您需要检查您的数据和条件,确保它们正确地反映了您的需求。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 -
悬赏问题
- ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
- ¥15 Java+vue部署版本反编译
- ¥100 对反编译和ai熟悉的开发者。
- ¥15 带序列特征的多输出预测模型
- ¥15 Python 如何安装 distutils模块
- ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
- ¥15 资源泄露软件闪退怎么解决?
- ¥15 CCF-CSP 2023 第三题 解压缩(50%)
- ¥30 comfyui openpose报错
- ¥20 Wpf Datarid单元格闪烁效果的实现