要解决的问题是:求出部门号为(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位的商品和商品卖数合集。但是我实在搞不明白它是如何执行的,或者说,在没有例子的情况下,用什么思路能写出上面的语句。请高手赐教!~~
解决方案 »
- 关于mysql5.6对于子查询的优化
- 关于存储过程返回值的问题
- mysql表合并问题
- myodbc5S 与 myodbc5W的区别是什么
- 请问统计每个产品每个月的销售量的SQL应该怎么写?
- mysql乱码,急
- mysql数据库能转换为SQL Server 数据库吗?可以的话,用什么方法?
- 哪位大虾知道怎么把mysql4.x的内存占用降到3.x的水平
- 求mysql for windows下的中文工具
- MySQL中update如何判断需要更新的值是否大于当前表中的最大值,如果大于才进行update
- 救命!PostgreSQL如何才能直接拷贝文件到一台新机子上运行?
- 在MYSQL中,编码是GB2312,但有部份字写进去就变乱码,怎办?
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这个命令是什么意思,帮助上面也没有。