第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在不使用聚合函數(shù)的情況下刪除 sql 中的重復(fù)項

在不使用聚合函數(shù)的情況下刪除 sql 中的重復(fù)項

眼眸繁星 2022-07-20 20:27:31
我開始學(xué)習(xí)java,但我的練習(xí)有問題。這是整個代碼的片段:import java.io.PrintWriter;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Connection;import java.util.ArrayList;import java.sql.PreparedStatement;private static final int MAX_LINES      = 44;private static final int REPORT_COL1    = 30;   private static final int REPORT_COL     = 15;   private ArrayList<String>   errors      = new ArrayList<String>();private ArrayList<String>   detailReport    = new ArrayList<String>();private ArrayList<String>   summaryReport=  new ArrayList<String>();String firstSortCode= (String) parameters.get("01");if(firstSortCode==null || firstSortCode.trim().equals("")) {    errors.add("Missing required parameter 01");    invalidParameters= true;}else {    for(int i=0; i<SORT_CODES.length; i++) {        if(firstSortCode.equals(SORT_CODES[i][0])) {            pSort1              = SORT_CODES[i][1];            sort1Attr           = SORT_CODES[i][2];            sort1GetDescTable   = SORT_CODES[i][3];            sort1GetDescCode    = SORT_CODES[i][4];            sort1GetDescValue   = SORT_CODES[i][5];            val1 = firstSortCode + " - " + pSort1;            break;        }    }    if(pSort1.equals("")) {        errors.add("Invalid value '"+ firstSortCode + "' for parameter 01");        invalidParameters= true;    }}String mainSelectSQL ="SELECT shrdgmr_pidm, " +  "   shrdgmr_levl_code, "+   "   shrdgmr_grst_code, " "  NVL("+sort1Attr+", 'Not Reported') ";mainSelectSQL =mainSelectSQL +    "FROM shrdgmr " +     "WHERE shrdgmr_pidm is not null " + //Appends the ORDER BY clausemainSelectSQL+= "ORDER BY "+sort1Attr;//Executes the query and obtains the ResultSetResultSet rs= sqlStatement.executeQuery();String sort1Desc= "***";            String Sort1Prev= "*";我的問題是如何合并重復(fù)的項目并總結(jié)它們的數(shù)量?例如,我現(xiàn)在的代碼只是在我的摘要報告中打印以下內(nèi)容,建筑學(xué) 40工程學(xué) 56牙科 66建筑學(xué) 16計算機科學(xué) 10工程學(xué) 11建筑學(xué) 5輸出應(yīng)該只是:建筑學(xué) 61工程學(xué) 67牙科 66計算機科學(xué) 10建筑學(xué) 5我只是堅持如何做到這一點。我正在考慮使用 hashmap 或 hashset,但我不確定如何。感謝您的幫助,謝謝!
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

如果你真的不想在 sql 中使用聚合,你可以使用HashMap<String, Integer>. 像這樣的東西:


Map<String, Integer> aggResult = new HashMap<>();

while (rs.next()) {

    String name = rs.getString(NAME_INDEX); //NAME_INDEX - name column index

    int value = rs.getInt(VALUE_INDEX); //VALUE_INDEX - value column index


    aggResult.merge(name, value, Integer::sum);


    //if you dont have java8 use this "if":

    /*

    if (aggResult.containsKey(name)) {

        Integer sum = aggResult.get(name);

        aggResult.put(name, sum + value);

    } else {

        aggResult.put(name, value);

    }

    */

}

//test output:

aggResult.forEach((key, value) -> System.out.println(key + ": " + value));

也許您需要TreeMap(有或沒有比較器)來代替HashMap對來自 ResultSet 或其他東西的值的順序、空值檢查。


查看完整回答
反對 回復(fù) 2022-07-20
?
ITMISS

TA貢獻1871條經(jīng)驗 獲得超8個贊

必須涉及聚合函數(shù),并且查詢“沒有聚合的聚合”沒有任何魅力

有了這個下面的查詢就可以了。我使用 sum 是因為您的 o/p 實際上看起來不像計數(shù)數(shù)據(jù),而是已計數(shù)記錄的總和

          SELECT NAME, SUM(*)
            FROM TABLE GROUP BY 
            NAME


查看完整回答
反對 回復(fù) 2022-07-20
  • 2 回答
  • 0 關(guān)注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號