值得注意。当我删除 from 部分并在单独的查询中运行它时,代码可以工作。我可以内连接、外连接、左连接或右连接。但是,当我将代码添加回案例查询时,它会返回在美国位置未找到的错误消息。
谢谢, 中号
有问题的代码部分
FROM `sql-practice-361723.warehouse_orders.Warehouse` AS warehouse
LEFT JOIN
`sql-practice-361723.warehouse_orders.Orders`As Orders
ON
warehouse.warehouse_id = Orders.warehouse_id
--> 完整代码
SELECT
Warehouse.warehouse_id,
CONCAT(Warehouse.state, ':' , Warehouse.warehouse_alias) AS warehouse_name,
COUNT(Orders.order_id) AS num_of_orders,
(SELECT
COUNT(*)
FROM warehouse_orders.orders As orders) AS total_orders,
CASE
WHEN COUNT(orders.orders_id/(SELECT COUNT (*) FROM warehouse_orders.orders AS Orders)) <= 0.2
then "Fullfilled 0%-20% of Orders"
WHEN COUNT(orders.orders_id/(SELECT COUNT (*) FROM warehouse_orders.orders AS Orders)) >
0.2
and COUNT(orders.orders_id/(SELECT COUNT (*) FROM warehouse_orders.orders AS Orders)) <=
0.6
then "Fullfilled 21%-60% of Orders"
ELSE "Fullfilled more than 60% of Orders"
END AS fullfillment_summary
FROM `sql-practice-361723.warehouse_orders.Warehouse` AS warehouse
LEFT JOIN
`sql-practice-361723.warehouse_orders.Orders`As Orders
ON
warehouse.warehouse_id = Orders.warehouse_id
GROUP BY
Warehouse.warehouse_id,
warehouse_name
HAVING
COUNT(Orders.order_id > 0)
我仔细检查并稍微调整了代码。我调整了别名以反映代码 Case 部分中数据表的完整位置参数。
HAVINVG 计数代码也有错误。 () 的位置不正确。
不知道为什么别名没有按计划工作,但解决方法很简单,将直接位置放入 CASE 代码中,它解决了我的问题。
值得注意的是,虽然我认为问题出在 FROM LEFT Join 部分,但问题出现在已经填充表的代码中。
非常感谢任何其他评论, 中号
本节的实际视频是错误的,我花了几个小时在这上面,并且在上一个视频中出现了错误。视频还出现了最后的 HAVING 语句显示不正确的情况。虽然很烦人,但我正在学习!
我终于成功了,关键是为 from 子句提供完整的表名称。 :
SELECT
Warehouse.warehouse_id,
CONCAT(Warehouse.state, " : ", Warehouse.warehouse_alias) as warehouse_name,
count(Orders.order_id) as number_of_orders,
(
SELECT count(*) FROM `<project_id>.warehouse.warehouse_orders` Orders
) as total_orders,
CASE
WHEN COUNT(Orders.order_id)/(SELECT count(*) from `<project_id>.warehouse.warehouse_orders` Orders) <= 0.20
THEN "Fulfilled 0-20% of Orders"
WHEN COUNT(Orders.order_id)/(SELECT count(*) from `<project_id>.warehouse.warehouse_orders` Orders) > 0.20
AND COUNT(Orders.order_id)/(SELECT count(*) from `<project_id>.warehouse.warehouse_orders` Orders) <= 0.60
THEN "Fulfilled 21%-60% of Orders"
ELSE "Fulfilled more than 60% of orders"
END AS fullfillment_summary
FROM `<project_id>.warehouse.warehouse` Warehouse
LEFT JOIN
`<project_id>.warehouse.warehouse_orders` Orders ON Orders.warehouse_id = Warehouse.warehouse_id
GROUP BY
Warehouse.warehouse_id,
warehouse_name
HAVING
COUNT(Orders.order_id) >0
对!所以我也遇到了同样的问题,是的,讲师错误地输入了 HAVING 子句。它应该是
HAVING COUNT(Orders.order_id) > 0
而不是 HAVING COUNT(Orders.order_id > 0)
此外,关键是要确保正确命名所有内容。很容易与订单和订单混淆,这也是我遇到问题的地方。
基本上我的表名和数据集名都是小写的。讲师使用“订单”和“仓库”为各自的表设置别名。如果您有
warehouse_orders.Table_name_as_per_explorer_tab
,那么就我而言,这将是 warehouse_orders.orders
。
在我们使用
Orders.order_id
的地方使用 Alias_name_given.order_id
这对我有用。
SELECT
Warehouse.warehouse_id,
CONCAT(Warehouse.state, ": ", Warehouse.warehouse_alias) AS warehouse_name,
COUNT(Orders.order_id) AS number_of_orders,
(
SELECT
COUNT(*)
FROM
warehouse_orders.orders AS Orders
)
AS total_orders,
CASE
WHEN COUNT(Orders.order_id) / (SELECT COUNT(*) FROM warehouse_orders.orders AS Orders) <= 0.20
THEN "Fulfilled 0-20% of Orders"
WHEN COUNT(Orders.order_id) / (SELECT COUNT(*) FROM warehouse_orders.orders AS Orders) > 0.20
AND COUNT(Orders.order_id) / (SELECT COUNT(*) FROM warehouse_orders.orders AS Orders) <= 0.60
THEN "Fulfilled 21-60% of Orders"
ELSE "Fulfilled more than 60% of Orders"
END AS fulfillment_summary
FROM
`<YOUR_PROJECT_NAME>.warehouse_orders.warehouse` AS Warehouse
LEFT JOIN
`<YOUR_PROJECT_NAME>.warehouse_orders.orders` AS Orders
ON Orders.warehouse_id = Warehouse.warehouse_id
GROUP BY
Warehouse.warehouse_id,
warehouse_name
HAVING
COUNT(Orders.order_id) > 0