ConvertUtil

package com.anna.hive.util;

public class ConvertUtil {

    /**
     * 統(tǒng)計(jì)分析函數(shù)的計(jì)算          sum count  avg
     * @param database 數(shù)據(jù)庫(kù)名稱
     * @param table 要操作的表的名稱
     * @param columns 結(jié)果列
     * @param column 計(jì)算列 ——> 也可以是數(shù)組
     * @param type 計(jì)算功能:sum / average /count
     * @return 翻譯后的SQL
     * */
    public String SAC(String database, String table, String[] columns, String column, String type) {
        String cls = "";

        for (String c : columns) {
            cls += c + ",";
        }
        String sql = "select " + cls + type  + "(" + column + ")" + " from " + database + "." + table + " group by " + cls.substring(0,cls.length() - 1);
        return sql;
    }

    /**
     * 獲得指定數(shù)據(jù)表的前n條數(shù)據(jù)  limit
     * @param database 數(shù)據(jù)庫(kù)名稱
     * @param table 數(shù)據(jù)表
     * @param columns 要獲取的列
     * @param n 要獲取的記錄數(shù)
     * @return 翻譯后的SQL
     * */
    public String getTableDataByN(String database, String table, String[] columns, int n) {
        String cls = "";

        for (String c : columns) {
            cls += c  + ",";
        }

        cls = cls.substring(0, cls.length() - 1);
        String sql = "select " + cls + " from " + database + "." + table + " limit " + n;
        return sql;
    }

    /**
     * 獲得指定數(shù)據(jù)表的前百分之n的數(shù)據(jù)         tablesample
     * @param database 數(shù)據(jù)庫(kù)
     * @param table 數(shù)據(jù)庫(kù)表
     * @param columns 待查詢的列
     * @param percent 百分比
     * @return 翻譯后的SQL
     * */
    public String getDataByNPercent(String database, String table, String[] columns, double percent) {
        String cls = "";

        for (String s : columns) {
            cls += s + ",";
        }

        cls = cls.substring(0, cls.length() - 1);
        String sql = "select " + cls + " from " + database + "." + table + " tablesample(" + percent + " percent)";
        return sql;
    }

    /**
     * 隨機(jī)抽樣     rand()
     * @param database 數(shù)據(jù)庫(kù)名稱
     * @param table 數(shù)據(jù)表名稱
     * @param columns 待查詢返回的列
     * @param n 要獲取多少一條記錄數(shù)
     * @return 翻譯后的SQL
     * */
    public String getRandomDataN(String database, String table, String[] columns, int n) {
        String cls = "";

        for (String c : columns) {
            cls += c + ",";
        }
        String sql = "select " + cls + "rand() r from " + database + "." + table + " order by r limit " + n;
        return sql;
    }

    /**
     * 條件查詢
     * @param database 數(shù)據(jù)庫(kù)名稱
     * @param table 數(shù)據(jù)表名稱
     * @param columns 條件列名
     * @param conditions 條件
     * @param values 條件值
     * @return 翻譯后的SQL
     * */
    public String getDataByCondition(String database, String table, String[] columns, String[] conditions, String[] values) {
        String c = "";
        for (int i = 0; i < columns.length; i++) {
            c += " and  " + columns[i] + " " + conditions[i] + " " + values[i];
        }

        String sql = "select * from " + database + "." + table + "where 1 = 1 " +c;
        return sql;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 我沒有發(fā)表過文章,因?yàn)椴簧朴诒磉_(dá)自己。有時(shí)候想說(shuō)的話,如果通過這種方式表達(dá)出來(lái),總覺得太矯情,也許天南地北地繞了一...
    天空有朵雨做的云liu閱讀 394評(píng)論 0 3

友情鏈接更多精彩內(nèi)容