要解决的问题是:求出部门号为(1,2,6,10)每个部门中,卖数前20名的商品,和对应的卖数。语句如下:
SELECT A.部门编号,A.商品编号,SUM(A.周卖数) as 卖数
INTO #临时表
FROM 卖数周单 A INNER JOIN 店铺 B
ON A.店铺CD=B.店铺CD
WHERE A.年周 BETWEEN '200520' AND '200536'
AND A.部门 IN (1,2,6,10)
AND B.店铺种类=1
SELECT *
FROM #临时表 C
WHERE 20>(SELECT COUNT(1)
FROM #临时表 D
WHERE D.卖数>C.卖数 AND D.部门编号=C.部门编号)其实前一个SELECT语句没啥问题能看的懂,就是后一个SELECT语句中 WHERE 部分,他是如何执行的。从大方面讲,也知道是选出所需要的每个部门中,卖数前20位的商品和商品卖数合集。但是我实在搞不明白它是如何执行的,或者说,在没有例子的情况下,用什么思路能写出上面的语句。请高手赐教!~~
SELECT A.部门编号,A.商品编号,SUM(A.周卖数) as 卖数
INTO #临时表
FROM 卖数周单 A INNER JOIN 店铺 B
ON A.店铺CD=B.店铺CD
WHERE A.年周 BETWEEN '200520' AND '200536'
AND A.部门 IN (1,2,6,10)
AND B.店铺种类=1
SELECT *
FROM #临时表 C
WHERE 20>(SELECT COUNT(1)
FROM #临时表 D
WHERE D.卖数>C.卖数 AND D.部门编号=C.部门编号)其实前一个SELECT语句没啥问题能看的懂,就是后一个SELECT语句中 WHERE 部分,他是如何执行的。从大方面讲,也知道是选出所需要的每个部门中,卖数前20位的商品和商品卖数合集。但是我实在搞不明白它是如何执行的,或者说,在没有例子的情况下,用什么思路能写出上面的语句。请高手赐教!~~
SELECT A.部门编号,A.商品编号,SUM(A.周卖数) as 卖数 from 表1 A
WHERE A.年周 BETWEEN '200520' AND '200536'
AND A.部门 IN (1,2,6,10)
GROUP BY A.部门编号,A.商品编号
) B
ORDER BY B.卖数
LIMIT 20
这样不行么???
那个例子和我的这个问题可以说是一模一样的。看不明白那句SQL是因为对SQL查询的过程不了解,把一段SELECT放在WHERE部分是我第一次遇到的。
楼上朋友的方法,行不通,不明白LIMIT这个命令是什么意思,帮助上面也没有。