【发布时间】:2016-04-06 08:10:42
【问题描述】:
我的数据库如下所示:
- 峰值(名称、海拔高度、差异、地图、地区)
- 攀登者(姓名、性别)
- 参与(TRIP_ID,姓名)
- 爬升(TRIP_ID、峰值、时间)
PEAK 提供有关用户感兴趣的山峰的信息。该表列出了每个山峰的名称、海拔(以英尺为单位)、难度级别(1-5 级)、地图位于,以及它所在的内华达山脉地区。
CLIMBER 列出了俱乐部的成员,并给出了他们的姓名和性别。
PARTICIPATED 给出了参加过各种登山旅行的登山者的集合。每次旅行的参与者人数各不相同。
CLIMBED 会根据每座山峰的攀登数据告诉您每次攀登行程中攀登了哪些山峰。
我需要帮助编写以下查询:
- 计算俱乐部中男性和俱乐部中女性的平均峰数。
- 哪对登山者一起攀登的山峰最多,那是多少座山峰?
- 谁在大约 60 天内攀登了 20 多座山峰?
对于第一个查询,到目前为止,我已经找到了一种计算男性攀登高峰总数的方法:
SELECT SUM(C)
FROM
(SELECT CD.PEAK, COUNT(*) C
FROM CLIMBED CD
WHERE CD.TRIP_ID IN
(SELECT TRIP_ID
FROM PARTICIPATED PA
WHERE PA.NAME IN
(SELECT NAME
FROM CLIMBER
WHERE SEX = 'M'))
GROUP BY CD.PEAK) T;
对于第二个查询,我确信以下内容不正确:
SELECT TEMP2.TRIP_ID, COUNT (*)
FROM
(SELECT P1.NAME, P2.NAME, P1.TRIP_ID
FROM PARTICIPATED P1, PARTICIPATED P2
WHERE P1.NAME <> P2.NAME AND
P1.TRIP_ID = P2.TRIP_ID) TEMP1,
(SELECT *
FROM CLIMBED) TEMP2
WHERE TEMP2.TRIP_ID = TEMP1.TRIP_ID
GROUP BY TEMP2.TRIP_ID;
【问题讨论】:
-
您能提供一些表格的数据吗?