mysql - 仅替换分组行的值
问题描述
我有以下示例数据:
日期 | 数量 | 类型 | 分组值 |
---|---|---|---|
2021-03-01 | 10 | 1 | |
2021-03-04 | 15 | 3 | |
2021-03-16 | 32 | 4 | |
2021-03-16 | 1 | 2 | 一个 |
2021-03-16 | 4 | 3 | 一个 |
2021-03-16 | 48 | 4 | 一个 |
我的预期结果是:
日期 | 数量 | 类型 | 分组值 |
---|---|---|---|
2021-03-01 | 10 | 1 | |
2021-03-04 | 15 | 3 | |
2021-03-16 | 32 | 4 | |
2021-03-16 | 53 | 9 | 一个 |
使用以下查询:
SELECT date, SUM(amount), type, grouping_value
FROM table
GROUP BY date, grouping_value
该查询仍未经测试,但应适用于除一项之外的所有要求。从结果中可以看出,查询应该按日期和分组值分组。所以我输入数据的前三行将保持原样,其他三行将在一个动作中分组。我想要做的是:当某些行被分组时,显示 9 作为类型而不是被分组的类型之一。如果一行未分组,则显示原始类型。分组的条件是 grouping_value 不为空。如果它只是分组,我怎么能告诉mysql替换?
解决方案
用于COUNT(*)
判断该行是否在一个组中。
SELECT date, SUM(amount), IF(COUNT(*) > 1, 9, MAX(type)) AS type, grouping_value
FROM table
GROUP BY date, grouping_value
推荐阅读
- javascript - 网站浏览页面的最佳方式
- c# - c# - 处理文件名中的空格,同时提供文件路径作为链接
- json - 如何在查询集中按日期分组
- c - 练习 5-3。编写我们在第 2 章中展示的函数 strcat 的指针版本: strcat(s,t) 将字符串 t 复制到 s 的末尾
- mongodb - 创建的集合试图删除重复的记录
- git - 我可以在不更改 URL 的情况下重命名 Git 子目录(为其内容)吗?
- sql - Postgresql:如何加入未在 from 子句中引用的表?
- vue.js - 包装器组件中的 vuejs beforeDestory 钩子
- javascript - 水平滚动不适用于 fullpage.js
- python - 如何将传入的烧瓶请求重定向到多个端点?