亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aggregatedata.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.expression;

import java.sql.SQLException;

import org.h2.engine.Constants;
import org.h2.engine.Database;
import org.h2.message.Message;
import org.h2.util.ObjectArray;
import org.h2.util.ValueHashMap;
import org.h2.value.Value;
import org.h2.value.ValueBoolean;
import org.h2.value.ValueDouble;
import org.h2.value.ValueInt;
import org.h2.value.ValueLong;
import org.h2.value.ValueNull;

/**
 * Data stored while calculating an aggregate.
 */
public class AggregateData {
    private final int aggregateType;
    private long count;
    private ValueHashMap distinctValues;
    private Value value;
    private double sum, vpn;
    private ObjectArray list;

    AggregateData(int aggregateType) {
        this.aggregateType = aggregateType;
    }

    void add(Database database, boolean distinct, Value v) throws SQLException {
        if (aggregateType == Aggregate.SELECTIVITY) {
            count++;
            if (distinctValues == null) {
                distinctValues = new ValueHashMap(database);
            }
            int size = distinctValues.size();
            if (size > Constants.SELECTIVITY_DISTINCT_COUNT) {
                distinctValues = new ValueHashMap(database);
                sum += size;
            }
            distinctValues.put(v, this);
            return;
        }
        if (aggregateType == Aggregate.COUNT_ALL) {
            count++;
            return;
        }
        if (v == ValueNull.INSTANCE) {
            return;
        }
        count++;
        if (distinct) {
            if (distinctValues == null) {
                distinctValues = new ValueHashMap(database);
            }
            distinctValues.put(v, this);
            return;
        }
        switch (aggregateType) {
        case Aggregate.COUNT:
            return;
        case Aggregate.SUM:
        case Aggregate.AVG:
            if (value == null) {
                value = v;
            } else {
                v = v.convertTo(value.getType());
                value = value.add(v);
            }
            break;
        case Aggregate.MIN:
            if (value == null || database.compare(v, value) < 0) {
                value = v;
            }
            break;
        case Aggregate.MAX:
            if (value == null || database.compare(v, value) > 0) {
                value = v;
            }
            break;
        case Aggregate.GROUP_CONCAT: {
            if (list == null) {
                list = new ObjectArray();
            }
            list.add(v);
            break;
        }
        case Aggregate.STDDEV_POP:
        case Aggregate.STDDEV_SAMP:
        case Aggregate.VAR_POP:
        case Aggregate.VAR_SAMP: {
            double x = v.getDouble();
            if (count == 1) {
                sum = x;
                vpn = 0;
            } else {
                double xs = sum - (x * (count - 1));
                vpn += (xs * xs) / count / (count - 1);
                sum += x;
            }
            break;
        }
        case Aggregate.EVERY:
            v = v.convertTo(Value.BOOLEAN);
            if (value == null) {
                value = v;
            } else {
                value = ValueBoolean.get(value.getBoolean().booleanValue() && v.getBoolean().booleanValue());
            }
            break;
        case Aggregate.SOME:
            v = v.convertTo(Value.BOOLEAN);
            if (value == null) {
                value = v;
            } else {
                value = ValueBoolean.get(value.getBoolean().booleanValue() || v.getBoolean().booleanValue());
            }
            break;
        default:
            throw Message.getInternalError("type=" + aggregateType);
        }
    }

    ObjectArray getList() {
        return list;
    }

    Value getValue(Database database, boolean distinct) throws SQLException {
        if (distinct) {
            count = 0;
            groupDistinct(database);
        }
        Value v = null;
        switch (aggregateType) {
        case Aggregate.SELECTIVITY: {
            int s = 0;
            if (count == 0) {
                s = 0;
            } else {
                sum += distinctValues.size();
                sum = (100 * sum / count);
                s = (int) sum;
                s = s <= 0 ? 1 : s > 100 ? 100 : s;
            }
            v = ValueInt.get(s);
            break;
        }
        case Aggregate.COUNT:
        case Aggregate.COUNT_ALL:
            v = ValueLong.get(count);
            break;
        case Aggregate.SUM:
        case Aggregate.MIN:
        case Aggregate.MAX:
        case Aggregate.SOME:
        case Aggregate.EVERY:
            v = value;
            break;
        case Aggregate.AVG:
            if (value != null) {
                v = divide(value, count);
            }
            break;
        case Aggregate.GROUP_CONCAT:
            return null;
        case Aggregate.STDDEV_POP: {
            if (count < 1) {
                return ValueNull.INSTANCE;
            }
            v = ValueDouble.get(Math.sqrt(vpn / count));
            break;
        }
        case Aggregate.STDDEV_SAMP: {
            if (count < 2) {
                return ValueNull.INSTANCE;
            }
            v = ValueDouble.get(Math.sqrt(vpn / (count - 1)));
            break;
        }
        case Aggregate.VAR_POP: {
            if (count < 1) {
                return ValueNull.INSTANCE;
            }
            v = ValueDouble.get(vpn / count);
            break;
        }
        case Aggregate.VAR_SAMP: {
            if (count < 2) {
                return ValueNull.INSTANCE;
            }
            v = ValueDouble.get(vpn / (count - 1));
            break;
        }
        default:
            throw Message.getInternalError("type=" + aggregateType);
        }
        return v == null ? ValueNull.INSTANCE : v;
    }

    private Value divide(Value a, long count) throws SQLException {
        if (count == 0) {
            return ValueNull.INSTANCE;
        }
        int type = Value.getHigherOrder(a.getType(), Value.LONG);
        Value b = ValueLong.get(count).convertTo(type);
        a = a.convertTo(type).divide(b);
        return a;
    }

    private void groupDistinct(Database database) throws SQLException {
        if (distinctValues == null) {
            return;
        }
        if (aggregateType == Aggregate.COUNT) {
            count = distinctValues.size();
        } else {
            count = 0;
            ObjectArray l2 = distinctValues.keys();
            for (int i = 0; i < l2.size(); i++) {
                add(database, false, (Value) l2.get(i));
            }
        }
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区三区四区| 在线观看亚洲一区| 奇米综合一区二区三区精品视频| 欧美激情在线一区二区三区| 精品久久久久久久久久久久久久久 | 亚洲成人午夜影院| 一区二区三区欧美日韩| 亚洲精品视频在线观看免费| 亚洲欧洲日本在线| 亚洲第一搞黄网站| 日韩成人一级大片| 黄色日韩三级电影| 国产乱淫av一区二区三区| 国产一本一道久久香蕉| 国产毛片精品一区| 不卡的av电影在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 99国产精品99久久久久久| 色天使久久综合网天天| 欧美性一二三区| 日韩欧美成人一区二区| 久久蜜桃av一区二区天堂| 国产欧美一区二区精品秋霞影院| 国产欧美精品国产国产专区| 中文字幕在线不卡一区| 亚洲国产欧美一区二区三区丁香婷| 亚洲国产精品久久人人爱蜜臀| 日韩vs国产vs欧美| 国产成人三级在线观看| 97精品国产97久久久久久久久久久久| 91社区在线播放| 91麻豆精品国产91久久久更新时间| 欧美久久一二三四区| 欧美成人猛片aaaaaaa| 久久久不卡网国产精品二区| 亚洲人快播电影网| 蜜桃视频一区二区三区| 菠萝蜜视频在线观看一区| 欧美午夜视频网站| 久久精品亚洲国产奇米99| 亚洲黄色片在线观看| 久99久精品视频免费观看| 972aa.com艺术欧美| 日韩欧美高清dvd碟片| 国产精品美女久久福利网站 | 欧美午夜精品一区| 久久久久久夜精品精品免费| 亚洲在线观看免费| 国产精品综合网| 欧美日韩在线播放一区| 中文字幕欧美国产| 免费亚洲电影在线| 日本二三区不卡| 国产天堂亚洲国产碰碰| 亚洲一区二区五区| 日本美女视频一区二区| 色综合久久综合网欧美综合网 | 韩国三级在线一区| 在线观看日韩一区| 国产精品久久一卡二卡| 韩国欧美国产1区| 91精品国产综合久久小美女 | 色婷婷久久久久swag精品| 精品成人在线观看| 日本不卡视频在线观看| 欧美三级日韩三级| 亚洲人成7777| 色综合咪咪久久| 亚洲欧洲无码一区二区三区| 国产一区二区三区免费观看| 欧美一区二区三区在线| 午夜精品福利视频网站| 欧美美女直播网站| 日韩一区欧美二区| 欧美一卡二卡三卡四卡| 日韩vs国产vs欧美| 日韩三级免费观看| 久久成人免费日本黄色| 欧美xfplay| 国产一区二区三区视频在线播放| 日韩精品一区二| 国产一区二区三区日韩| 亚洲国产成人一区二区三区| 成人a级免费电影| 国产精品久久久久久久午夜片| 成人午夜精品一区二区三区| 国产精品久久久久久久第一福利| 99久久综合国产精品| 欧美国产精品一区二区三区| 国产精品白丝av| 国产精品每日更新| 色噜噜久久综合| 亚洲18色成人| 日韩欧美精品在线视频| 韩国女主播一区| 日本一区二区成人在线| av不卡在线播放| 亚洲图片一区二区| 精品三级av在线| 成人免费不卡视频| 亚洲一区二区综合| 日韩亚洲欧美在线| av资源站一区| 午夜精品久久久久久久久久| 精品成a人在线观看| www.欧美日韩| 蜜桃视频一区二区| 国产精品大尺度| 欧美人妖巨大在线| 国产精品自拍网站| 亚洲精品国产品国语在线app| 在线播放91灌醉迷j高跟美女| 国内精品嫩模私拍在线| 最新日韩av在线| 日韩精品一区二区三区视频播放| 丁香天五香天堂综合| 亚洲一区二区三区视频在线播放| 日韩三级.com| 一本大道久久a久久综合婷婷| 日韩精品电影在线| 国产精品久久久一区麻豆最新章节| 欧美巨大另类极品videosbest| 成人午夜激情影院| 蜜桃精品视频在线观看| 亚洲免费电影在线| 国产午夜精品一区二区三区四区| 欧洲色大大久久| 成人丝袜高跟foot| 狠狠狠色丁香婷婷综合激情| 一区二区三区免费看视频| 久久久五月婷婷| 91精品国产高清一区二区三区| 99久久久无码国产精品| 极品少妇一区二区| 三级欧美在线一区| 一二三区精品福利视频| 欧美激情一区二区三区在线| 日韩视频免费观看高清完整版在线观看 | 国产mv日韩mv欧美| 麻豆精品视频在线| 日韩av中文在线观看| 亚洲福利国产精品| 亚洲最大色网站| 亚洲精品国产a| 亚洲男帅同性gay1069| 国产精品私房写真福利视频| 久久久天堂av| 久久这里只有精品6| 精品国产一区二区国模嫣然| 欧美一区二区三区的| 69堂成人精品免费视频| 色婷婷av一区| 91久久精品一区二区| 91久久线看在观草草青青| 97久久人人超碰| 91麻豆成人久久精品二区三区| 成人黄色小视频在线观看| 成人一级片在线观看| 国产精品一区二区三区99| 国产精品综合一区二区三区| 国产乱淫av一区二区三区 | 国产亚洲人成网站| 久久久久久久久久久久电影| 久久久久97国产精华液好用吗 | 六月丁香婷婷色狠狠久久| 欧美a级一区二区| 麻豆一区二区三| 国产在线一区二区综合免费视频| 韩国v欧美v亚洲v日本v| 国产精品1024| 色婷婷综合久久久| 欧美日韩亚洲综合| 538在线一区二区精品国产| 欧美va亚洲va在线观看蝴蝶网| 精品国产a毛片| 国产精品久久久久婷婷| 一区二区三区四区乱视频| 亚洲成人tv网| 激情图片小说一区| 99r精品视频| 717成人午夜免费福利电影| 欧美va日韩va| 亚洲欧美经典视频| 卡一卡二国产精品| jizzjizzjizz欧美| 91精品国产一区二区三区香蕉| 久久精品一区蜜桃臀影院| 亚洲男人电影天堂| 久久黄色级2电影| eeuss鲁片一区二区三区在线观看| 色老汉av一区二区三区| 日韩欧美国产综合| 中文字幕中文在线不卡住| 午夜久久久久久| 成人听书哪个软件好| 欧美一区二区三区免费视频| 中文在线资源观看网站视频免费不卡| 亚洲老司机在线| 国产一区二区不卡在线| 欧美性欧美巨大黑白大战|