Re: [SQL ] 关于 再排序 与 效率 的问题

楼主: cutekid (可爱小孩子)   2013-11-25 09:41:53
SELECT Table_log.uid, Table_sex.sex, COUNT(*)
FROM Table_log, Table_sex
WHERE (date_time >= 20131105 AND date_time <= 20131107 AND
Table_log.uid = Table_sex.uid)
GROUP by Table_log.uid
ORDER BY Table_sex.sex,COUNT(*) DESC
LIMIT 100
※ 引述《vvrr (vvrr)》之铭言:
: ※ 引述《rockchangnew (rock)》之铭言:
: 原本打算周五晚上回复的,结果跑去赶别的东西,
: 到刚才要睡了才想到……
: : 为何不将
: : order by count(*) desc 换成
: : order by count(*) desc,sex
: 这样的话,会变成“先排count,如果count相同的话再排sex”,
: 但是由于输出的结果想变成男生女生分开,所以我希望的是“完全照sex排”。
: 后来的写法是:
: SELECT * FROM (
: SELECT Table_log.uid, Table_sex.sex, COUNT(*)
: FROM Table_log, Table_sex
: WHERE (date_time >= 20131105 AND date_time <= 20131107 AND
: Table_log.uid = Table_sex.uid)
: GROUP by Table_log.uid
: ORDER BY COUNT(*) DESC
: LIMIT 100
: } as _tmp
: ORDER BY sex;
: 看起来是用了暂存表格的方法,暂时解决了。
: 因为资料很多,而且会一直成长,
: 如果有其他不用子查询又不用建暂存表格的方法还请大家不吝告知。
: 谢谢有回文推文和水球我的各位 <(_ _)>
作者: vvrr (vvrr)   2012-01-25 15:57:00
这样是将全部资料先照男女排,再各自按count排序取前100名的结果会变成“取到男生(或女生)最多的100名”和我希望的“将前100名按男女分开”不一样......
楼主: cutekid (可爱小孩子)   2012-01-25 16:51:00
您好,可以举出一个您的写法跟上面写法不一样的例子吗 3Q
作者: vvrr (vvrr)   2012-01-25 17:00:00
假设100男100女,count各自都是从1~100我希望拿到的是“男100~男51, 女100~女51”共100名你的写法会找到“男100~男1”或是“女100~女1”(看男女哪个先
楼主: cutekid (可爱小孩子)   2012-01-25 18:27:00
假设: 100 男 count 都是 2;100 女 count 都是 1您的写法,会得到您想要的答案吗
作者: vvrr (vvrr)   2012-01-26 11:55:00
应该会拿到100个男生,也是我想要的答案

Links booklink

Contact Us: admin [ a t ] ucptt.com