Re: [SQL ] 關於 再排序 與 效率 的問題

看板Database作者 (可愛小孩子)時間12年前 (2013/11/25 09:41), 編輯推噓0(0010)
留言10則, 2人參與, 最新討論串4/4 (看更多)
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; : 看起來是用了暫存表格的方法,暫時解決了。 : 因為資料很多,而且會一直成長, : 如果有其他不用子查詢又不用建暫存表格的方法還請大家不吝告知。 : 謝謝有回文推文和水球我的各位 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.168.101.73

11/25 15:57, , 1F
這樣是將全部資料先照男女排,再各自按count排序
11/25 15:57, 1F

11/25 15:58, , 2F
取前100名的結果會變成「取到男生(或女生)最多的100名」
11/25 15:58, 2F

11/25 15:59, , 3F
和我希望的「將前100名按男女分開」不一樣......
11/25 15:59, 3F

11/25 16:51, , 4F
您好,可以舉出一個您的寫法跟上面寫法不一樣的例子嗎 3Q
11/25 16:51, 4F

11/25 17:00, , 5F
假設100男100女,count各自都是從1~100
11/25 17:00, 5F

11/25 17:00, , 6F
我希望拿到的是「男100~男51, 女100~女51」共100名
11/25 17:00, 6F

11/25 17:01, , 7F
你的寫法會找到「男100~男1」或是「女100~女1」(看男女哪個先
11/25 17:01, 7F

11/25 18:27, , 8F
假設: 100 男 count 都是 2;100 女 count 都是 1
11/25 18:27, 8F

11/25 18:28, , 9F
您的寫法,會得到您想要的答案嗎
11/25 18:28, 9F

11/26 11:55, , 10F
應該會拿到100個男生,也是我想要的答案
11/26 11:55, 10F
文章代碼(AID): #1IaghauO (Database)
討論串 (同標題文章)
文章代碼(AID): #1IaghauO (Database)