子查询和 SUM
Subquery and SUM
需要帮助,我有一个问题 SQL 检索连锁酒店中最大值 "Total Room Cost" 的语句。并使用子查询来确定按酒店分组的总房间费用。我可以进行 2 个查询,但将它们放在一起时我总是出错。我的两个 table。酒店--使用 table hotel_no 和酒店名称。 room--with table room_no,hotel_no,room_type,room_price
到目前为止我有
SELECT hotelname, SUM(room_price) as Total
FROM hotel, room
WHERE hotel.hotel_no = room.hotel_no
GROUP BY Hotelname
给我酒店名称和每家酒店的价格
和
SELECT SUM(room_price) AS Total
FROM room
给我总计
每次我尝试将它们放在一起时都会出错
例如
SELECT hotel_no, SUM(room_price) AS "Total"
FROM room
WHERE hotel_no= hotel_no
UNION ALL
SELECT hotel_no, hotelname
FROM hotel
WHERE hotelname = hotelname
group by hotelname;
请帮忙 谢谢
很抱歉,但显然它得到了正确的答案,但我错了,它必须是 from 中的子查询
关于这家酒店的问题,连锁酒店中的每家酒店都有许多房间,价格各不相同,酒店想知道哪家酒店的房间费用总计最高
样本
SELECT MAX(SubFromName.NewColumnName)
FROM (SELECT columnName, SUM(columnName) AS ‘NewColumnName’
FROM table
GROUP BY columnName) SubFromName;
希望这个 link 有效这是模式数据 http://www.sqlfiddle.com/#!9/48429
最接近的在下面,但还是不对
select hotelname, MAX(room_price), SUM(room_price) AS 'Total Room Cost'
from room,hotel
WHERE hotelname IN (SELECT hotelname FROM hotel
WHERE hotel.hotel_no = room.hotel_no)
group by hotelname;
不能加入或合并应该像示例一样如果有人明白我的意思提前谢谢。我有一个脑死亡的星期。
试试这个:
SELECT hotel_no, SUM(room_price) AS Total, "" as hotelname
FROM room
WHERE hotel_no= hotel_no
UNION ALL
SELECT hotel_no, "" AS Total, hotelname as hotelname
FROM hotel
WHERE hotelname = hotelname
group by hotelname;
UNION ALL
两个查询中的列数应该相同。
Select chain_name, sum(price)
From chain a
Inner join
(Select a.hotel_no, sum(room_price) as price, b.chainid
From room a
Inner join hotel b
On a.hotel_no = b.hotel_no
Group by a.hotel_no) b
On a.Id =b.chainid
分组依据chain_name
只是为了回答自己,这就是我最终得到的结果
SELECT hotelname,
(SELECT SUM(room_price) from room where hotel_no = hotel.hotel_no) as TotalRoomCost
from hotel
GROUP BY hotelname
原来是这样
SELECT MAX(Eagle.TotalRoomCost)
FROM (SELECT hotel_no, SUM(room_price) AS 'TotalRoomCost' FROM room GROUP BY hotel_no) Eagle;
需要帮助,我有一个问题 SQL 检索连锁酒店中最大值 "Total Room Cost" 的语句。并使用子查询来确定按酒店分组的总房间费用。我可以进行 2 个查询,但将它们放在一起时我总是出错。我的两个 table。酒店--使用 table hotel_no 和酒店名称。 room--with table room_no,hotel_no,room_type,room_price
到目前为止我有
SELECT hotelname, SUM(room_price) as Total
FROM hotel, room
WHERE hotel.hotel_no = room.hotel_no
GROUP BY Hotelname
给我酒店名称和每家酒店的价格
和
SELECT SUM(room_price) AS Total
FROM room
给我总计
每次我尝试将它们放在一起时都会出错 例如
SELECT hotel_no, SUM(room_price) AS "Total"
FROM room
WHERE hotel_no= hotel_no
UNION ALL
SELECT hotel_no, hotelname
FROM hotel
WHERE hotelname = hotelname
group by hotelname;
请帮忙 谢谢
很抱歉,但显然它得到了正确的答案,但我错了,它必须是 from 中的子查询 关于这家酒店的问题,连锁酒店中的每家酒店都有许多房间,价格各不相同,酒店想知道哪家酒店的房间费用总计最高
样本
SELECT MAX(SubFromName.NewColumnName)
FROM (SELECT columnName, SUM(columnName) AS ‘NewColumnName’
FROM table
GROUP BY columnName) SubFromName;
希望这个 link 有效这是模式数据 http://www.sqlfiddle.com/#!9/48429
最接近的在下面,但还是不对
select hotelname, MAX(room_price), SUM(room_price) AS 'Total Room Cost'
from room,hotel
WHERE hotelname IN (SELECT hotelname FROM hotel
WHERE hotel.hotel_no = room.hotel_no)
group by hotelname;
不能加入或合并应该像示例一样如果有人明白我的意思提前谢谢。我有一个脑死亡的星期。
试试这个:
SELECT hotel_no, SUM(room_price) AS Total, "" as hotelname
FROM room
WHERE hotel_no= hotel_no
UNION ALL
SELECT hotel_no, "" AS Total, hotelname as hotelname
FROM hotel
WHERE hotelname = hotelname
group by hotelname;
UNION ALL
两个查询中的列数应该相同。
Select chain_name, sum(price)
From chain a
Inner join
(Select a.hotel_no, sum(room_price) as price, b.chainid
From room a
Inner join hotel b
On a.hotel_no = b.hotel_no
Group by a.hotel_no) b
On a.Id =b.chainid
分组依据chain_name
只是为了回答自己,这就是我最终得到的结果
SELECT hotelname,
(SELECT SUM(room_price) from room where hotel_no = hotel.hotel_no) as TotalRoomCost
from hotel
GROUP BY hotelname
原来是这样
SELECT MAX(Eagle.TotalRoomCost)
FROM (SELECT hotel_no, SUM(room_price) AS 'TotalRoomCost' FROM room GROUP BY hotel_no) Eagle;