Re: [請益] 關於大筆資料的統計
: 也可以嘗試用php解決, 先用性別和分數做區分再跑一個for去統計
: SELECT A.sex, B.grade, count(*) FROM A, B
: WHERE A.fid = B.fid
: GROUP BY A.sex, B.grade
: ORDER BY A.sex, B.grade
: 應該會得到
: sex grade count(*)
: F 0 X
: F 1 X
: ..
: F 100 X
: M 0 X
: M 1 X
: ..
: M 100 X
: 然後for去把count加起來, 這樣就只有一個sql qurey和O(200)的迴圈
: 或者0~50範圍比較大, 獨立一個sql query, 其他的一個query再搭配for
: 這樣應該會比較快吧?
: : .
: : .
: : .
: : .
: : fid是學生編號為唯一值,sex是性別,grade是成績
: : 大概是要做出一個如下的統計表
: : 0-50 50-60 60-70 70-80 80-90 90-100
: : ------------------------------------
: : 男筆數
: : 女筆數
: : 是我指令下錯了嗎???還是php跑的本來就很慢呢???
: : 建view的話速度可以變快嗎???要如何建呢??
那如果是要做出一個學生姓別和選修的科目(複選)的比較呢??
比如說:選修的科目(20個)放在 C 表格裡面,分別以c1,c2,c3..c20欄位代表,
欄位型態為tinyint,如果1為有選擇,0為沒有選擇,要做出如下表格
c1 c2 c3 c4......c20
-----------------------------
男筆數
女筆數
如果說要用 select count(*),A.sex,C.c1.C.c2,C.c3....,C.c20 from A left join C
on A.pid=C.pid group by sex,c1,c2...,c20,來計算出如上的表格,這樣不是更慢嗎??
所以只能夠用
select count(*) from A left join C on A.pid=C.pid where A.sex='F' and C.c1=1
select count(*) from A left join C on A.pid=C.pid where A.sex='M' and C.c1=1
.
.
的方式去跑..但是算出來還是非常的慢
只能說不知道是mssql的問題還是php連mssql的問題了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.230.162.86
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章