查询学习SQL管理员的帮助
我有一个疑问:查询学习SQL管理员的帮助,sql,Sql,我有一个疑问: SELECT count(*) from ( SELECT custid, count(*) as OrderCount FROM orderinfo WHERE preparedate between '2011-06-01' and '2011-12-31' GROUP by CUSTID ) COUNTDB WHERE Ordercount > '20' 返回:901个客户ID 如果我跑步: SELECT * from ( SELECT custid, count(
SELECT count(*) from
(
SELECT custid, count(*) as OrderCount
FROM orderinfo
WHERE preparedate between '2011-06-01' and '2011-12-31'
GROUP by CUSTID
) COUNTDB
WHERE Ordercount > '20'
返回:901个客户ID
如果我跑步:
SELECT * from
(
SELECT custid, count(*) as OrderCount
FROM orderinfo
WHERE preparedate between '2011-06-01' and '2011-12-31'
GROUP by CUSTID
) COUNTDB
WHERE Ordercount > '20'
它返回单个客户ID及其订单计数的列表
custid OrderCount
1001 24
1010 30
1033 36
我希望做的是查看查询返回的客户ID中有多少已在较晚的日期范围内下单,例如“2012-06-01”和“2012-12-31”
我的目标是:
让我看看是否可以用另一种方式来描述
我需要查看2011年下了20多个订单的CustID的总数(提供的日期范围)。然后,第二步是查看这些客户中有多少人在2012年同一天的日期范围内下了订单我假设您的模式如下所示:
OrderInfo ( CustId, PrepareDate )
(嗯,简单,嗯?)
因此,如果我理解正确的话,您需要在两个日期之间下了订单并且下了20多个订单的客户列表。这很简单:
SELECT
CustId,
Count(*) AS OrderCount
FROM
OrderInfo
WHERE
PrepareDate BETWEEN '2012-06-01' and '2012-12-31'
GROUP BY
CustId
HAVING
OrderCount > 20
也许像这样的工作:
SELECT
custid
FROM
orderinfo
WHERE
preparedate between '2011-06-01' and '2011-12-31'
AND custid IN (
SELECT
custid
FROM
orderinfo
WHERE
preparedate between '2011-06-01' and '2011-12-31'
GROUP BY
custid
HAVING
COUNT(*) > 20
)
让我看看是否可以用另一种方式来描述。我要看看总数 2011年下了20多个订单的客户数量 (提供日期范围)。然后,第二步是看看有多少 这些客户中的大多数已在2012年的日期范围内下单 同日@AlexandreP.Levasseur 请试试这个。此外,如果您可以制作一个SQLFIDLE,让我们在尝试帮助您时测试查询,这将非常方便
SELECT
CustId
FROM
OrderInfo
WHERE
PrepareDate BETWEEN '2012-06-01' and '2012-12-31' AND
CustId IN
(SELECT
DISTINCT CustId
FROM
OrderInfo
WHERE
PrepareDate BETWEEN '2011-06-01' and '2011-12-31'
GROUP BY
CustId
HAVING
Count(*) > 20)
您不应在日期之间使用。对这是因为此查询中的操作顺序是FROM、WHERE、groupby、SELECT和HAVING。在WHERE表达式中,别名
OrderCount
尚不为人所知,因此无法按您的要求应用它。让我看看是否可以用另一种方式来描述它。我需要查看2011年下了20多个订单的CustID的总数(提供的日期范围)。然后,第二步是,如果我改为选择计数(不同的客户ID),而不是报告在2011年下了20多个订单的697个客户ID,以及在2012年至少下了一个订单,那么查看这些客户中有多少人在2012年的同一日期范围内下了订单@AlexandreP.LevasseurSo,对吗?如果是这样的话,我的号码看起来不错,我知道了!