Mysql使用sum函式時的注意事項
MySQL的SUM函式是用來找出記錄中各種的欄位的總和。
要了解SUM函式考慮EMPLOYEE_TBL表具有以下記錄:
mysql> SELECT * FROM employee_tbl;
+——+——+————+——————–+
| id | name | work_date | daily_typing_pages |
+——+——+————+——————–+
| 1 | John | 2007-01-24 | 250 |
| 2 | Ram | 2007-05-27 | 220 |
| 3 | Jack | 2007-05-06 | 170 |
| 3 | Jack | 2007-04-06 | 100 |
| 4 | Jill | 2007-04-06 | 220 |
| 5 | Zara | 2007-06-06 | 300 |
| 5 | Zara | 2007-02-06 | 350 |
+——+——+————+——————–+
7 rows in set (0.00 sec)
現在,假設根據上面的表想來計算所有的dialy_typing_pages的總數,那麼可以通過使用下面的命令:
mysql> SELECT SUM(daily_typing_pages)
-> FROM employee_tbl;
+————————-+
| SUM(daily_typing_pages) |
+————————-+
| 1610 |
+————————-+
1 row in set (0.00 sec)
可以使用GROUP BY子句設定的各種記錄的總和。下面的例子將總結所有相關的記錄一個人,列印紙的每一個人總數。
mysql> SELECT name, SUM(daily_typing_pages)
-> FROM employee_tbl GROUP BY name;
+——+————————-+
| name | SUM(daily_typing_pages) |
+——+————————-+
| Jack | 270 |
| Jill | 220 |
| John | 250 |
| Ram | 220 |
| Zara | 650 |
+——+————————-+
5 rows in set (0.17 sec)
獲取SUM函式的返回值是BigDecimal型別
private long playCount(String advertise_id) {
String sql = "select sum(play_count) from advertising_play_info where advertising_id = ?";
Query query = getCurrentSession().createSQLQuery(sql);
query.setString(0, advertise_id);
BigDecimal bigDecimal = (BigDecimal) query.list().get(0);
long playCount = bigDecimal.longValue();
return playCount;
}