gpt4 book ai didi

SQL省略只出现一次的行

转载 作者:行者123 更新时间:2023-12-04 14:39:45 24 4
gpt4 key购买 nike

好的,我对 SQL 很陌生,所以问题是:

对于每个接受订单的销售代表,列出他们所有订单的最小、最大和平均订单金额。仅包括 1990 年至 1999 年(含)期间任何时间发出的订单。 从列表中删除在此时间范围内仅下了 1 个订单的任何销售代表。按销售代表编号对结果进行排序。

我把它归结为:

SELECT Rep
,MIN(Amount) AS "MinAmount"
,MAX(Amount) AS "MaxAmount"
,AVG(Amount) AS "AverageAmount"
FROM Orders
WHERE Orderdate BETWEEN '1990-01-01' AND '1999-12-31'
GROUP BY Rep;

我以为答案是:

AND Rep > ( SELECT COUNT(Distinct Rep)
FROM Orders)

但是好像不行。感谢您的帮助!

最后订单包含:

CREATE TABLE Orders
(OrderNum NUMBER(10) NOT NULL,
OrderDate DATE NOT NULL,
Cust NUMBER(10),
Rep NUMBER(10),
Mfr CHAR(3) NOT NULL,
Product CHAR(5) NOT NULL,
Qty NUMBER(5) NOT NULL,
Amount NUMBER(9,2) NOT NULL,
CONSTRAINT OrdersPK
PRIMARY KEY (OrderNum));

最佳答案

可以用子查询解决问题,但正确的子查询是:

AND Rep IN (SELECT Rep
FROM Orders
GROUP BY Rep
HAVING count(*) > 1
)

为了直观地了解您的方法为何不起作用,请考虑什么是 Rep。它只是一个代码。因此,在代码上执行 > 不会带来太多兴趣。至少,无论它做什么,都不太可能与订单数量有关。即使您真的非常想要它。

一个更简单的方法是完全放弃该子句并添加:

HAVING count(*) > 1

关于SQL省略只出现一次的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22102074/

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