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