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