作者TeemingVoid (TeemingVoid)
看板Database
标题Re: [SQL ] 分组取前五
时间Wed Jul 25 01:34:37 2012
※ 引述《b60413 (None)》之铭言:
: 我想要做一个查询是分组取前五的动作,
: 资料库的结构大致如下,
: id t_type frequency
: 1 a 10
: 2 b 15
: 3 c 20
: 4 a 5
: 5 b 1
: 目前的做法我是使用分开查询的方式去做,然後再自行将结果合并,如下
: SELECT * FROM test WHERE t_type LIKE 'a' ORDER BY frequency DESC LIMIT 5
: SELECT * FROM test WHERE t_type LIKE 'b' ORDER BY frequency DESC LIMIT 5
: SELECT * FROM test WHERE t_type LIKE 'c' ORDER BY frequency DESC LIMIT 5
: 有试着使用GROUP BY的功能去达到精简,
: 不过一直试不出来正确的语法,
: 请问有没有人有更漂亮的写法可以提供?
请参考这样的写法,如此,可以一次处理全部的类别:
SELECT * FROM test t
WHERE ( SELECT COUNT(*) FROM test
WHERE t_type = t.t_type and frequency >= t.frequency
) <= 5
ORDER BY t_type, frequency DESC
像「每组第一」、「各组前 N 笔」这类的题型,下列这篇文章有详尽的解说:
http://ppt.cc/r7FZ
一并提供给您参考。 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.134.191