Sql語句中count和sum運用

2021-08-16 04:50:44 字數 1256 閱讀 2681

首先區分一下這兩個函式使用方法:

count():主要用來統計表的行數。

sum():用來求表中某乙個字段資料的和,用大白話說就是求某一列的和。

直接上表:

student:

| sno  | sname  | sage | s*** |

+------+--------+------+------+

| s001 | 張三   |   23 | 男   |

| s002 | 李四   |   23 | 男   |

| s003 | 吳鵬   |   25 | 男   |

| s004 | 琴沁   |   20 | 女   |

| s005 | 王麗   |   20 | 女   |

| s006 | 李波   |   21 | 男   |

| s007 | 劉玉   |   21 | 男   |

| s008 | 蕭蓉   |   21 | 女   |

| s009 | 陳蕭曉 |   23 | 女   |

| s010 | 陳美   |   22 | 女   |

sc(學號、課程號、分數):

| sno  | cno  | score |

+------+------+-------+

| s001 | c001 |  78.9 |

| s001 | c002 |  82.9 |

| s001 | c003 |    59 |

| s002 | c001 |  80.9 |

| s002 | c002 |  72.9 |

| s003 | c001 |  81.9 |

| s003 | c002 |  81.9 |

| s004 | c001 |  60.9 |

+------+------+-------+

需求:查詢所有同學的學號、姓名、選課數、總成績;

錯誤sql:

select a.sno,a.sname,count(b.cno),sum(b.score) from student a,sc b where a.sno=b.sno;

這是非常大意的寫法,沒有經過仔細分析,選課數、總成績應該是成績表sc來提供,正確寫法:

select a.sno,a.sname,b.cnos,b.core from student a,(select sno,count(cno) cnos,sum(score) core from sc group by sno) b where a.sno=b.sno;

SQL語句中SUM函式

在工作中有兩個sum的求和函式相加的時候如果其中乙個是null那麼相加的結果也是null,所以相加之前要用nvl處理下 例如 select sum a.create staff from dp.t spec steet a where a.sheet id 1154查出來是空 如果直接這樣相加結果肯...

sql語句中的count

不考慮null的情況,如果null參與聚集運算,則除count 之外其它聚集函式都忽略null.count 1 和count 主鍵 這兩個只掃瞄主鍵index就可以得到資料,count 是掃瞄表的。所以count 1 和count 主鍵 這兩個效率高。還有一種寫法是count rowid 這也是只掃...

sql語句中的 和in

今天優化了一段專案中的 的作用就是在使用者表和使用者賬戶表中查出所有有賬戶的使用者,當然查出來的使用者應該是不重複的 distinct一下 這2個表中的記錄大約都為2萬條左右,資料量還是很大的,通過hibernate的轉換出來是這樣的 select from select rownumber ove...