1. 程式人生 > >Mysql使用sum函式時的注意事項

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;
}