gpt4 book ai didi

sql - 还有其他方法可以解决此查询吗?

转载 作者:太空狗 更新时间:2023-10-30 02:00:32 25 4
gpt4 key购买 nike

表:客户

customer_id  cust_name     city        grade       salesman_id
----------- ------------ ---------- ---------- -----------
3002 Nick Rimando New York 100 5001
3005 Graham Zusi California 200 5002
3001 Brad Guzan London 5005
3004 Fabian Johns Paris 300 5006
3007 Brad Davis New York 200 5001
3009 Geoff Camero Berlin 100 5003
3008 Julian Green London 300 5002
3003 Jozy Altidor Moncow 200 5007

表:顺序

ord_no      purch_amt   ord_date    customer_id  salesman_id
---------- ---------- ---------- ----------- -----------
70001 150.5 2012-10-05 3005 5002
70009 270.65 2012-09-10 3001 5005
70002 65.26 2012-10-05 3002 5001
70004 110.5 2012-08-17 3009 5003
70007 948.5 2012-09-10 3005 5002
70005 2400.6 2012-07-27 3007 5001
70008 5760 2012-09-10 3002 5001
70010 1983.43 2012-10-10 3004 5006
70003 2480.4 2012-10-10 3009 5003
70012 250.45 2012-06-27 3008 5002
70011 75.29 2012-08-17 3003 5007
70013 3045.6 2012-04-25 3002 5001

我需要一个查询来生成每个当前有多个订单的客户的姓名和编号。

我的尝试:-

SELECT customer_id,  cust_name
FROM customer a
WHERE (SELECT COUNT (*)
FROM orders b
WHERE a.customer_id = b.customer_id) > 1

这给出了期望的输出。但是,是否有任何替代方法可以提供所需的输出并比这表现得更好?此外,我怎么知道哪个会做得更好?

最佳答案

我会试试这个:

SELECT customer_id,  cust_name
FROM customer a
WHERE customer_id IN (SELECT customer_id
FROM orders b
GROUP BY customer_id
HAVING COUNT(*) > 1)

子查询只返回在 orders 表中存在一次以上的 customer_id。

或者这个,类似于上面的,但是一个JOIN而不是IN:

SELECT a.customer_id, a.cust_name
FROM customer a
JOIN (SELECT customer_id
FROM orders b
GROUP BY customer_id
HAVING COUNT(*) > 1) b ON a.customer_id = b.customer_id

关于sql - 还有其他方法可以解决此查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38989913/

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