You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks SQL查询问题:餐厅订单数最高账户ID结果不符

问题诊断与解决

核心错误点

你的SQL语句中,count(order_origin = "RESTAURANT")的用法不符合统计需求:

  • 在Databricks SQL中,order_origin = "RESTAURANT"会返回布尔值(true/false),而count()函数会统计所有非NULL值——不管是true还是false都会被计入,最终结果其实是该账户的全部订单总数,而非仅餐厅订单数。

正确的SQL写法

需要通过条件聚合来精准统计餐厅订单数,两种常用有效写法:

写法1:SUM+CASE组合

SELECT 
  account_id, 
  SUM(CASE WHEN order_origin = 'RESTAURANT' THEN 1 ELSE 0 END) AS Order_From_Restaurant
FROM ord_sample
GROUP BY account_id
ORDER BY Order_From_Restaurant DESC
LIMIT 10

写法2:COUNT+CASE组合(利用COUNT忽略NULL的特性)

SELECT 
  account_id, 
  COUNT(CASE WHEN order_origin = 'RESTAURANT' THEN 1 END) AS Order_From_Restaurant
FROM ord_sample
GROUP BY account_id
ORDER BY Order_From_Restaurant DESC
LIMIT 10

结果验证

使用上述正确查询后,会得到预期结果:账户59a4daa0619c067d79f9c0be27dfe61d91bad7058dea5cd5e964482409484f50的餐厅订单数为431。你之前得到的462是该账户的全部订单数量(包含非餐厅订单),这就是结果不符的根本原因。

内容的提问来源于stack exchange,提问作者KollerBy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:32:38