mysql - MySQL 最大值和最小值解释
问题描述
我的问题是有人解释这是如何工作的。我在 ItPrice 列中得到了 MAX 和 MIN。另一位学生向我展示了这行得通,但无法真正解释发生了什么。我知道联合只是重复相同的代码,将 > 符号翻转以返回最小值而不是最大值,所以我只需要一半的演练。这是问题:
编写查询以列出与最高和最低行程价格相关联的 Triptype。
select triptype.tid, triptype.tname, it1.itprice
from triptype, custitinerary it1
where triptype.tid = it1.tid
and it1.itprice > ALL
(select itprice from custitinerary it2
where it1.ItPrice != it2.Itprice)
Union
select triptype.tid, triptype.tname, it1.itprice
from triptype, custitinerary it1
where triptype.tid = it1.tid
and it1.itprice < ALL
(select itprice from custitinerary it2
where it1.ItPrice != it2.Itprice);
解决方案
我无法理解提供的 sql。但是您的问题的解决方案可能如下:
我将假设您有以下表格:
行程类型表:
id,
tripType
行程表:
id,
itineraryPrice,
tripType_id,
然后,您获取与行程价格相关的最高和最低 tripTypes 的查询可以计算如下:
首先查询得到最高的tripType
SELECT tripType.id, tripType.name, MAX(itinerary.itineraryPrice) as 'price'
FROM tripType, itinerary
WHERE itinerary.tripType_id = tripType.id
这将导致以下行:
------------------------------
| id | name | price |
|------|---------|-----------|
| 42 | Sports | 16000.00 |
------------------------------
其次查询获取最低tripType
SELECT tripType.id, tripType.name, MIN(itinerary.itineraryPrice) as 'price'
FROM tripType, itinerary
WHERE itinerary.tripType_id = tripType.id
这将导致以下行:
--------------------------------
| id | name | price |
|------|-----------|-----------|
| 11 |Adventure | 2000.00 |
--------------------------------
最后一步
使用 UNION 将两行(查询)组合成一个结果:
SELECT tripType.id, tripType.name, MAX(itinerary.itineraryPrice) as 'price'
FROM tripType, itinerary
WHERE itinerary.tripType_id = tripType.id
UNION
SELECT tripType.id, tripType.name, MIN(itinerary.itineraryPrice) as 'price'
FROM tripType, itinerary
WHERE itinerary.tripType_id = tripType.id
最后一步将为您提供最终结果,如下所示:
-------------------------------
| id | name | price |
|------|-----------|-----------|
| 42 | Sports | 16000.00 |
|------|-----------|-----------|
| 11 | Adventure | 2000.00 |
-------------------------------
推荐阅读
- python - 将 mutt 用于 .csv 文件时,增加了一行
- spring-boot - 带有千分尺的Kafka消费者滞后配置
- angular - 使用 Typescript 在 v4 中的 d3 饼图中的类型“数字”上不存在属性“值”的错误
- node.js - 使用 nodejs 的 Hyperledger Fabric 基于状态的背书
- github - 存储库名称作为 GitHub Action 环境变量?
- json - 在 jsonb 中的数组内搜索值
- mysql - SQL - RANK() 与多个 WHERE 和 GROUP BY
- javascript - 对于我的可点击下拉菜单,图标内的区域不可点击
- kubernetes - 如何在 Ansible 中检索已创建的 Google Kubernetes (GKE) 集群的凭据?
- javascript - 如何使用 Jest 测试 JS 函数?