美文网首页
ConvertUtil

ConvertUtil

作者: 须臾之北 | 来源:发表于2018-11-05 21:57 被阅读46次
package com.anna.hive.util;

public class ConvertUtil {

    /**
     * 统计分析函数的计算          sum count  avg
     * @param database 数据库名称
     * @param table 要操作的表的名称
     * @param columns 结果列
     * @param column 计算列 ——> 也可以是数组
     * @param type 计算功能: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;
    }

    /**
     * 获得指定数据表的前n条数据  limit
     * @param database 数据库名称
     * @param table 数据表
     * @param columns 要获取的列
     * @param n 要获取的记录数
     * @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;
    }

    /**
     * 获得指定数据表的前百分之n的数据         tablesample
     * @param database 数据库
     * @param table 数据库表
     * @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;
    }

    /**
     * 随机抽样     rand()
     * @param database 数据库名称
     * @param table 数据表名称
     * @param columns 待查询返回的列
     * @param n 要获取多少一条记录数
     * @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 数据库名称
     * @param table 数据表名称
     * @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;
    }
}

相关文章

网友评论

      本文标题:ConvertUtil

      本文链接:https://www.haomeiwen.com/subject/eamexqtx.html