首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检索COUNT() SUM() AVG() MIN() MAX()语句的结果集?

如何检索COUNT() SUM() AVG() MIN() MAX()语句的结果集?
EN

Stack Overflow用户
提问于 2013-01-22 12:26:40
回答 3查看 7.8K关注 0票数 1

我的系统在检索数据库中的一些值时出现了问题。我想要获取特定字段中的值的摘要。这是我的检索值的代码:

代码语言:javascript
复制
public void insertToClientSummary(){
    sql = "SELECT COUNT(genClientID), SUM(principal), SUM(interest), SUM(totalPayment), SUM(totalBal) FROM client_info";
    try {
        stmt = conn.prepareStatement(sql);
        rs = stmt.executeQuery();
        String titles[] = new String [4];
        titles[0] = "Total Clients";
        titles[1] = "Total Loan Book";
        titles[2] = "Total Interests";
        titles[3] = "Total Payment";
        titles[4] = "Total Balance";
        rs.next();
        for (int ctr=0;ctr<=5;ctr++){
            String sql2 = "INSERT INTO client_summary (title, sumValues) VALUES ('"+titles[ctr]+"','')";
            PreparedStatement stmt2 = conn.prepareStatement(sql2);
            stmt2.executeUpdate();
            ctr++;
            sql = "UPDATE client_summary SET sumValues = '"+String.valueOf(rs.getDouble(ctr))+"'";
            stmt = conn.prepareStatement(sql);
            stmt.executeUpdate();
            ctr--;
        }
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, "Client Summary Query Exception");
    }
}

顺便说一下,我还包含了在上述client_summary表中插入新值的代码。但我认为我在第一个查询中得到了异常。对数据的正确检索有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2013-01-22 12:29:42

您可以使用as name (别名)来获取它们。示例

代码语言:javascript
复制
SELECT COUNT(genClientID) as cnt, .........

然后

代码语言:javascript
复制
   rs.getString("cnt");
票数 3
EN

Stack Overflow用户

发布于 2013-01-22 13:18:56

如果您只想在汇总表中插入聚合值,则可以使用insert select。这样你就不需要结果集迭代了。e.g

代码语言:javascript
复制
INSERT INTO summary(id,total,max) SELECT count(id),sum(principal),sum(interest) FROM client_info
票数 1
EN

Stack Overflow用户

发布于 2013-10-13 04:59:47

这个解决方案对我不起作用。我不知道我在SQL查询中是否有问题,但是如果我在数据库上运行它,它会返回正确的值。

代码语言:javascript
复制
SELECT ((SUM(Y1) * 20) / 60) as heat FROM logger.AcondData where (time > '2013-10-12 0:0:0' and time < '2013-10-12 23:59:59') and Y1 = 1 and Y8 = 0;

这是来自ResultSet的信息。

代码语言:javascript
复制
java.sql.PreparedStatement preparedStatement = mConnection.prepareStatement(query);
ResultSet resultSet = preparedStatement.executeQuery();

while (resultSet.next())
{
    printWriter.println("<h1>Heating time: " + resultSet.getString("heat") + " minut");
}

Edit1:如果我去掉最后两个条件,它就可以工作。

代码语言:javascript
复制
SELECT ((SUM(Y1) * 20) / 60) as heat FROM logger.AcondData where (time > '2013-10-12 0:0:0' and time < '2013-10-12 23:59:59');

Y1和Y8是TINYINT(1)

Edit2:现在它可以工作了,看起来问题出在数据库数据上。从远程数据库导入数据后,一切正常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14451584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档