樓棟表:tb_build
房間表:tb_room
訂單表:tb_order
1、查詢出如下結果
NewName |
RoomArea |
RommTotal |
1棟-101 |
86 |
750000 |
|
|
|
分析:RoomArea和RoomTotal字段都可以直接從房間表獲得,而NewName字段,是由“樓棟表.樓棟名稱”和“房間表.房間名稱”分別組成的,需要用到函數“Concat_ws()”。
SQL語句:
SELECT CONCAT_WS('-',b.BuildName,r.RoomName) as NewName,r.RoomArea,r.RoomTotal
FROM tb_build as b,tb_room as r
WHERE r.BuildId = b.BuildId;
結果:
總結:
A、無分隔符——concat()
B、有分隔符——concat_ws()
2、每棟樓交易了幾單,每單均價是多少,每棟樓交易總價是多少?具體查詢出如下結果:
樓棟名稱 |
交易訂單數量 |
每單交易均價 |
交易總價 |
1棟 |
2 |
766605 |
1533210 |
|
|
|
|
分析:
A、獲取各訂單對應的樓棟名稱:
B、按樓棟ID計算“每棟樓的訂單記錄數”:
C、按照同樣的方式計算“每棟樓的交易總價”
D、計算“每棟樓的交易均價”:
SQL語句:
SELECT b.BuildName,COUNT(o.OrderId) as countOrder,SUM(o.OrderPrice)/COUNT(o.OrderId) as avgPrice,SUM(o.OrderPrice) as sumPrice
FROM tb_order as o,tb_room as r,tb_build as b
WHERE o.RommId = r.RoomId AND r.BuildId = b.BuildId
GROUP BY b.BuildName;
結果:
3、查詢每月每棟樓的交易情況,具體如下:
OrderMonth |
BuildName |
CountRoom |
OrderPrice |
4 |
1棟 |
2 |
1533100.00 |
|
|
|
|
代碼:
SELECT MONTH(o.OrderDate) as OrderMonth,b.BuildName,
COUNT(o.OrderId) as CountRoom,
SUM(o.OrderPrice) as sumPrice
FROM tb_order as o,tb_room as r,tb_build as b
WHERE o.RommId = r.RoomId AND r.BuildId = b.BuildId
GROUP BY b.BuildId;
結果: