首页 > 数据库 > > SQL练习:如何取前百分之N的记录?


SELECT
TOP 10 PERCENT
*
FROM City
ORDER BY ID DESC

SELECT COUNT(*) CNT FROM City
SELECT 0.1*COUNT(*) CNT FROM City
SELECT * FROM CITY
WHERE ID IN
(
SELECT ID FROM
(
SELECT ID FROM CITY ORDER BY ID DESC
)
WHERE ROWNUM < (SELECT COUNT(*)*0.1 FROM CITY)
)
SELECT * FROM
(
SELECT *,
ROW_NUMBER() OVER(ORDER BY ID DESC) rn
FROM City
ORDER BY ID DESC
) a
WHERE a.rn<=(SELECT 0.1*COUNT(*) FROM City)
SELECT
A.*,
@row_num:=@row_num+1 AS ROW_NUM
FROM
City A , (SELECT @row_num:=) B
ORDER BY ID DESC
SELECT * FROM
(
SELECT
A.*,
@row_num:=@row_num+1 AS ROW_NUM
FROM
City A , (SELECT @row_num:=) B
ORDER BY ID DESC
) C
WHERE C.ROW_NUM<=(@row_num*0.1)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3138182/ ,如需转载,请注明出处,否则将追究法律责任。