数据库条件查询语句

本文介绍了一种通过SQL查询语句统计指定时间内不同App包名点击次数的方法。利用DISTINCT、COUNT及GROUP BY等关键字实现去重计数和分组查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求如下:一张App点击信息的数据库表,App每点击一次,将信息插入表中。要求查询指定时间内的不同包名的App的点击次数

查询语句如下:SELECT DISTINCT PKG ,COUNT(*),* from APP_USAGE_TB_BEAN where DATE > 0 group by PKG

关键词:distinct  去重

            count 计数

            group by 分组


具体方法实现如下:

    /**
     * 获取指定时间内的App点击次数
     * @param millTimes  单位为s ,当day=0时,是全部的App点击次数
     * @return
     */
    protected static Map<String, Float> getAppClickMap(int millTimes) {
        Map<String, Float> result = new HashMap<>();
        long time = 0;
        if (millTimes != 0) {
            time = System.currentTimeMillis() - millTimes;
        }
        Cursor c = null;
        try {
            String query = "SELECT DISTINCT "+AppUsageTbBeanDao.Properties.Pkg.columnName +" ,COUNT(*),* from "+AppUsageTbBeanDao.TABLENAME
                    +" where "+AppUsageTbBeanDao.Properties.Date.columnName +" > "+time
                    +" group by "+AppUsageTbBeanDao.Properties.Pkg.columnName;
//            CbLog.v(TAG,"query sql = "+query);
            c = DaoManager.getAppUsageTbBeanBaseDaoInstance().rawQuery(query);

            if (c != null) {
                c.moveToFirst();
                for (int i = 0; i < c.getCount(); i++) {

                    String s = "app_click|" + c.getString(c
                            .getColumnIndexOrThrow(AppUsageTbBeanDao.Properties.Pkg.columnName));
                    Float n = c.getFloat(1);
                    result.put(s, n);
                    c.moveToNext();
                }
            }

            c.close();
        } catch (Throwable e) {
            CbLog.e("", e.toString());
        } finally {
            if (c != null) {
                c.close();
            }
        }
//        StringBuffer sb = new StringBuffer("query result: \r\n");
//        Set<String> keySet = result.keySet();
//        for (String key : keySet) {
//            sb.append(key + " : " + result.get(key) + "\r\n");
//        }
//        CbLog.v(TAG, sb.toString());
        return result;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值