mysql - 查询帮助 - 如何获取所有在前 20 家商店购物过的顾客?
问题描述
我需要让所有在总销售额($)前 20 家商店中的任何一家商店购物的客户。我也想有不同的客户。
这是我有的 5 张桌子。
消费者:有客户 ID 和其他一些详细信息
商家:有storeid(这个我没用过)
transaction:有customer id和orderid,这个表没有item数据。
order : 有 orderid 和 itemid 和 storeid
itemtable : 包含商品详细信息,例如价格、名称和 orderid
到目前为止,我的这个查询似乎不起作用。
select con.*
from consumer con
where con.id =
(select
trans.consumerid
from transaction trans
join order ord on trans.orderid = ord.id
join
(select
ord.merchantid
from order ord
join itemtable item on ord.id = item.orderid
group by ord.merchantid
order by sum(ordet.price) desc
limit 50
) s20
on s20.merchantid = ord.merchantid
)
它在 Spark 上给了我这个当前错误:
SQL 语句中的错误:RuntimeException:用作表达式的子查询返回多行:
我真的坚持这一点,并感谢任何帮助。
解决方案
您可以使用in
:
select c.*
from consumer c
where c.id in (select t.consumerid
from transaction t join
order o
on t.orderid = o.id join
(select o.merchantid
from order o join
itemtable i
on o.id = i.orderid
group by o.merchantid
order by sum(i.price) desc
limit 20
) s20
on s20.merchantid = o.merchantid
);
推荐阅读
- pandas - 使用python从html中提取表数据,其中行存储在div中
- kentico - 如何将带有表单控件的页面类型从 kentico 10 传输到 Xperience Core
- javascript - 添加其他类名后,CSS属性不起作用
- python - 如何使用 Python 以编程方式查找缩进错误
- r - 在 R 中按组创建集群
- java - 是否可以将文本格式化程序作为属性直接附加到文本字段?
- discord - discord.py 从 on_raw_reaction_add/remove 有效负载中获取频道 ID
- amazon-web-services - AWS Batch 在阵列配置中允许大约 25 个并发作业,而计算环境允许使用 256 个 CPU
- python - 从python中文本的开头更新打印输出
- c# - 动态 LoggingLevelSwitch 不适用于 .net 核心中的 IoC