点击文件名下载附件
作者: yhdata_yzm 时间: 2023-8-8 23:50
SELECT t1.month, t1.product, t1.rate
FROM detection t1
JOIN detection t2 ON t1.product = t2.product AND t1.month = t2.month + 1
JOIN detection t3 ON t1.product = t3.product AND t1.month = t3.month + 2
WHERE t1.rate < 0.98 AND t2.rate < 0.98 AND t3.rate < 0.98;
这个你参考下呢作者: jeff_lee 时间: 2023-8-9 00:19
自动预警?sql没这功能作者: yanieye 时间: 2023-8-9 08:55
思路:
1. 第一个子查询,查询出图片中展示的数据;
2. 第二个子查询,增加一列colA, 将图片中的月份减一个月;
3. 第三个子查询,增加一列colB, 将图片中的月份减两个月;
4. 将三个查询通过left join关联起来,关联的列是 第一个子查询中的月份 第二个子查询中的colA,第三个子查询中的colB, 以及每个子查询中的产品型号列;
5. 在这个查询的基础上,加一个计算列,三个合格率的列都是低于0.98则返回1, 否则返回0. 作者: yh_L59CUoX6 时间: 2023-8-9 20:39
可以试下这个思路思路:可以使用avg()+group by +having来判断,avg()+group by用于求每组产品的平均值,having用于判断每组的平均值是否低于0.98.作者: yhdata_yzm 时间: 2023-8-10 10:30
写sql:
假设您的数据表为 `product_quality`,包含字段 `product_model`、`year`、`month` 和 `qualified_rate`,您可以使用以下 SQL 查询来标识各产品型号连续三个月合格率低于0.98的情况:
```sql
SELECT
product_model,
CASE WHEN COUNT(*) >= 3 THEN 0 ELSE 1 END AS flag
FROM (
SELECT
product_model,
year,
month,
AVG(qualified_rate) AS avg_qualified_rate
FROM product_quality
GROUP BY product_model, year, month
) subquery
WHERE avg_qualified_rate < 0.98
GROUP BY product_model;
```