先groupby再max
时间: 2023-08-01 22:11:05 浏览: 53
回答: 当先进行group by操作再进行max操作时,会导致结果不准确,因为group by会将相同的演出单位进行分组,然后再取每组中的最大票房。这样会导致最大票房对应的剧目名称不正确,而是对应了每组中的第一条记录的剧目名称。为了解决这个问题,可以使用以下两种方法:
方法1: 使用子查询来筛选出每个演出单位票房最高的剧目名称。可以先查询出每个演出单位的最大票房,然后再根据最大票房来筛选出对应的剧目名称。例如:
```
SELECT * FROM show_plan s WHERE s.price = (SELECT MAX(price) FROM show_plan WHERE s.desp = desp) ORDER BY desp;
```
方法2: 使用子查询和limit来筛选出每个演出单位票房最高的剧目名称。可以先按票房降序排序,然后再根据演出单位进行分组,只保留每组中的第一条记录。例如:
```
SELECT * FROM (SELECT * FROM show_plan ORDER BY price DESC LIMIT 10000) t GROUP BY desp;
```
这样可以确保每个演出单位对应的剧目名称是最高票房的剧目名称。
#### 引用[.reference_title]
- *1* [group by与max函数配合使用问题](https://blog.csdn.net/leiwuhen92/article/details/103993293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [SQL中join group by having max() 时转Linq](https://blog.csdn.net/u010182162/article/details/103431051)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]