我正在制作一个三步作业问题,我在最后一步感到难过。为了理所当然的最后一步,我将发布整个问题,包括前两个步骤的解决方案:
前两步的问题和解决方案
创建名为TRIP_INVENTORY的视图。它包括州和每个州的旅行总数。使用UNITS作为每个州的总行程数的列名。按州分组和排序。
一个。编写并执行CREATE VIEW命令以创建TRIP_INVENTORY视图。
CREATE VIEW TRIP_INVENTORY AS
SELECT STATE, COUNT(TRIP_ID) AS UNITS
FROM TOURS_TRIP
GROUP BY STATE
湾编写并执行命令以检索具有超过10次跳闸的每个状态的状态和单位。
SELECT STATE, UNITS
FROM TRIP_INVENTORY
WHERE UNITS > 10
让我难倒的步骤
℃。编写并执行DBMS实际执行的查询。
这是我提出的不成功的查询:
SELECT STATE, COUNT(TRIP_ID) AS UNITS
FROM TOURS_TRIP
WHERE UNITS > 10
GROUP BY STATE
问题是WHERE子句中不能引用UNITS列别名。我也不能在WHERE子句中使用聚合函数。我很确定我需要使用子查询,但我无法弄清楚如何构造约束,以便它们将使用嵌套查询的结果删除不必要的状态。
任何人都可以提供任何见解吗?
答案 0 :(得分:1)
取决于实施,但
a)
SELECT STATE, COUNT(TRIP_ID) AS UNITS
FROM TOURS_TRIP
GROUP BY STATE
having count(trip_id) > 10
b)
Select state, units from (
SELECT STATE, COUNT(TRIP_ID) AS UNITS
FROM TOURS_TRIP
GROUP BY STATE
) temp (state,units)
where units > 10
答案 1 :(得分:0)
应该是
SELECT STATE, COUNT(TRIP_ID) AS UNITS
FROM TOURS_TRIP
GROUP BY STATE
having COUNT(TRIP_ID) > 10