gpt4 book ai didi

SQL/SQL-LITE - 过滤后统计记录

转载 作者:行者123 更新时间:2023-12-03 16:54:26 26 4
gpt4 key购买 nike

假设我有一张客户表和一张销售订单表,其架构如下:

  1. 客户 = {id, name}
  2. Sales_order = {id, customer_id, sales_representer}

具有以下定义:

  1. id 是两个表中的主键。
  2. customer_id 是外键引用客户。

我想执行以下查询:

For any customer whose sales_representer is 100, find the customer id, 
customer name and the number of his overall orders.

我构建了以下查询:

select C.id, C.name, count(C.id)
from customer C, sales_order S
where C.id = S.customer_id and
S.sales_represntor = '100'
group by C.id, C.nname;

但作为 count(C.id) 的结果,我只得到 sales_representer 为 100 的销售额。我知道我可以添加另一个 sales_order 实例(即 S2)并从中计数,但在我看来它根本没有效率。

有没有人有解决办法?

谢谢

最佳答案

您可以使用相关子查询来计算销售额。(在 SQLite 中,子查询通常与连接一样高效。)

SELECT id,
name,
(SELECT COUNT(*)
FROM sales_order
WHERE customer_id = customer.id) AS orders
FROM customer
WHERE id IN (SELECT customer_id
FROM sales_order
WHERE sales_representer = '100')

如果您关心效率,您应该使用 EXPLAIN QUERY PLAN 检查查询,甚至更好,只是测量它们。

关于SQL/SQL-LITE - 过滤后统计记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17897811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com