mysql中Top N的计算
0
在用sql计算类似Best Top N的时候,也就是查看在某些特定的维度下哪些产品卖的最好,比如查看每个月卖的销量前三的产品
在sql server中可以用 row number来实现
假定表就sales_month,product_id,sales_amount.
现在想知道的是,如何在mysql中实现top N的计算。
谢谢啦
在sql server中可以用 row number来实现
假定表就sales_month,product_id,sales_amount.
现在想知道的是,如何在mysql中实现top N的计算。
谢谢啦
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
4 个回复
冰凌子 2016-06-29 回答
赞同来自:
username,
DATE,
price
FROM
(SELECT
username,
DATE,
price,
@rownum := @rownum + 1,-- 序列编号
IF (
@pdept = heyf_tmp.username,
@rank := @rank + 1,
@rank := 1
) AS rank,
@pdept := heyf_tmp.username
FROM
(SELECT
username,
DATE,
price
FROM
test.rr
ORDER BY username ASC,-- 这里排序 根据要排的字段
price DESC) heyf_tmp,
(SELECT
@rownum := 0, -- 这里都是变量赋值
@pdept := NULL,
@rank := 0) a) result
WHERE rank <=N -- N就是topN的意思 就是排序后取N次序以内的数据
郑大鹏 2016-06-28 回答
赞同来自:
若要查询前10条记录,使用top 10即可,
但在mysql中不支持这个写法,它用limit 10。
我们可以利用MySQL中SELECT支持的一个子句——LIMIT——来完成这项功能。
LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下:
SELECT * FROM MYTABLE
ORDER BY AFIELD
LIMIT offset, recnum
其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。例:
select * from mytable
order by afield
limit 2, 5
即意为从第3条记录开始的5条记
kitty0802 2016-06-28 回答
赞同来自:
这个是sql server里面实现的效果
悟 - 取是能力,舍是境界 2016-06-29 回答
赞同来自: