未找到:表 sql-practice-361723:warehouse_orders.orders 未在美国位置找到 - GOOGLE Analytics

问题描述 投票:0回答:3

值得注意。当我删除 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)
sql google-bigquery google-analytics
3个回答
0
投票

我仔细检查并稍微调整了代码。我调整了别名以反映代码 Case 部分中数据表的完整位置参数。

HAVINVG 计数代码也有错误。 () 的位置不正确。

不知道为什么别名没有按计划工作,但解决方法很简单,将直接位置放入 CASE 代码中,它解决了我的问题。

值得注意的是,虽然我认为问题出在 FROM LEFT Join 部分,但问题出现在已经填充表的代码中。

非常感谢任何其他评论, 中号


0
投票

本节的实际视频是错误的,我花了几个小时在这上面,并且在上一个视频中出现了错误。视频还出现了最后的 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

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
© www.soinside.com 2019 - 2024. All rights reserved.