精华内容
下载资源
问答
  • mysql group by怎么用

    2017-11-21 16:21:00
    问题:用group by怎么过滤重复项,请举个例子吧? 答案: 例子 aa表 a b 123 10 123 12 1234 11 1234 ...

    问题:用group by怎么过滤重复项,请举个例子吧?

     

    答案:

    例子  aa表       a          b
                    123        10
                    123        12
                    1234       11
                    1234       14
    首先 group 是用来分组的  不是过滤重复项的。重复项删除语句 DISTINCT用这个 。 select  DISTINCT(a) from aa
    结果就是     a
                123
                1234
    
    group by用来分组的
    select a, sum(b) from aa group by a 
    sum意思是总和。结果就是
         a         b
         123       22
         1234      25
    语句的目的是以a为目标 需要知道 相同名字的物品   在b列一共有多少数量总和
    select a,count(b)  from aa group by a 
    count 意思行数总和   结果就是
          a         b
          123       2
          1234      2
    
    

    语句目的是 相同名字的物品 一共有几行



    本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2012/09/20/2695439.html,如需转载请自行联系原作者

    展开全文
  • group by 分组 通用数据库具有基于表的特定列对数据进行分析的能力。 可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数...
    group by 
    分组
    通用数据库具有基于表的特定列对数据进行分析的能力。
    可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:
    SELECT DEPT, MAX(SALARY) AS MAXIMUM
    FROM STAFF
    GROUP BY DEPT
    此语句产生下列结果:
    DEPT MAXIMUM
    ------ ---------
    10 22959.20
    15 20659.80
    20 18357.50
    38 18006.00
    42 18352.80
    51 21150.00
    66 21000.00
    84 19818.00
    注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
    将 WHERE 子句与 GROUP BY 子句一起使用
    分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。例如:
    SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUM
    FROM EMPLOYEE
    WHERE HIREDATE > '1979-01-01'
    GROUP BY WORKDEPT, EDLEVEL
    ORDER BY WORKDEPT, EDLEVEL

    结果为:
    WORKDEPT EDLEVEL MAXIMUM
    -------- ------- -----------
    D11 17 18270.00
    D21 15 27380.00
    D21 16 36170.00
    D21 17 28760.00
    E11 12 15340.00
    E21 14 26150.00
    注意:在 SELECT 语句中指定的每个列名也在 GROUP BY 子句中提到。未在这两个地方提到的列名将产生错误。GROUP BY 子句对 WORKDEPT 和 EDLEVEL 的每个唯一组合各返回一行。
    在 GROUP BY 子句之后使用 HAVING 子句
    可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY 子句后面包含一个 HAVING 子句。 HAVING 子句可包含一个或多个用 AND 和 OR 连接的谓词。每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较:
    该组的另一个特性
    例如:
    HAVING AVG(SALARY) > 2 * MIN(SALARY)
    常数
    例如:
    HAVING AVG(SALARY) > 20000
    例如,下列查询寻找雇员数超过 4 的部门的最高和最低薪水:
    SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUM
    FROM EMPLOYEE
    GROUP BY WORKDEPT
    HAVING COUNT(*) > 4
    ORDER BY WORKDEPT
    此语句产生下列结果:
    WORKDEPT MAXIMUM MINIMUM
    -------- ----------- -----------
    D11 32250.00 18270.00
    D21 36170.00 17250.00
    E11 29750.00 15340.00
    有可能(虽然很少见)查询有 HAVING 子句但没有 GROUP BY 子句。在此情况下,DB2 将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果 HAVING 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。来自:http://zhidao.baidu.com/question/11763032.html
    展开全文
  • [img=https://img-bbs.csdn.net/upload/201404/09/1397034167_415659.jpg][/img] select * from changelogs where id in( select max(ID) from changelogs group by changeID,changetype) linq怎么
  • 当我select count(*) as "人数" ,birthday from user group by birthday的时候显示 人数 birthday 1 1990-12-24 1 1990-06-26 1 1991-03-28 1 1992-08-14 我想达到的效果是同一个年份的人数合起来.也就是...
  • SELECT `chengji`,count(*) FROM `table` GROUP BY `chengji` 在Mysql 中可以出来 可是要怎么显示到php文件中那 页面样子为 | 不及格 | 及格 | 良好 | 数量 | | | | [img=...
  • 怎么sql语句 得到以下结果呢? 1). 取某个姓名下使用号码的总次数。 姓名 使用次数 张三 2 李四 1 王五 1 2) 取使用号码的总次数 使用号码 被使用次数 AA 2 BB 1 CC 1 一共是2条语句。
  • [img=... 已经group by t.zyh,t.fymc进行分组了, 然后having count(t.zyh)>1 筛选出 t.zyh 大于1次的才显示,但是结果还是有只显示1次 t.zyh 的出来。 求大神教一下!
  • 在建模预测时遇见一个问题:预测结果中正例极少,导致准确率虽然很高,但是召回率非常...因为groupby以后直接进行join等操作,groupby直接操作以后,不是Dataframe的结构,有点奇葩,所以出现了大规模的0值。 在这...

    对没耐心看到底的盆友:reset_index()函数拿走不谢!


    在建模预测时遇见一个问题:预测结果中正例极少,导致准确率虽然很高,但是召回率非常低,0.01以下,查看了数据比例,训练集有三万多条,其中有两万多条正例,这个比例很均衡,但是为什么召回率这么低呢?
    后来发现,在抽取数据的地方就有问题,特征抽出来都是0,那么,为什么是0呢?

    答:因为groupby以后直接进行join等操作,groupby直接操作以后,不是Dataframe的结构,有点奇葩,所以出现了大规模的0值。

    在这里总结一下可能遇到的坑。

    1. 读取数据:
      pd.read_csv('test.csv',names = [])
    2. 如何保留index并且将结果存成DataFrame?
      答:使用reset_index()函数。df.reset_index()
    3. 如何将层级索引“推平”?也就是取消层级显示,
      答:使用unstack()函数
    4. join有顺序的差别
      答:如果处理好names的问题,merge非常好用。另外,concat是拼接,可以横着拼(axis = 1),默认竖着拼(axis=0)
    5. 有Nan怎么办?
      答:具体问题具体分析,如果是观看次数这类,缺失值可以补充0代表没看过,使用fillna(0)。如果是温度等等可以使用平均值或中位数。
    6. 数据处理常用的显示信息函数:
    df.info() 显示df的所有信息,包括行列个数名字占用内存数等等
    df.head() 默认显示前5列,在括号里可以改成1020,,,
    df.tail() 后5列,同上
    type(df)  显示df的类型,在python脚本中非常常用
    len(df)   显示df的长度。

    另外,apply也是合并数据的绝佳选择。在这里贴一个简单的预处理程序,希望以后忘记的时候常回来看看。原始数据是招商银行一个比赛的数据。

    #coding:utf-8
    
    import pandas as pd
    import numpy as np
    import time
    import xgboost as xgb
    import operator
    
    from sklearn.model_selection import StratifiedKFold
    from sklearn.decomposition import PCA
    
    def Max_action_count(x):
        return np.max(x)
    def Min_action_count(x):
        return np.min(x)
    def Median_action(x):
        return x.median()
    def Skew_action(x):
        skew = np.power((x - np.std(x))/np.mean(x),3)
        return skew
    def Kurt_action(x):
    
        kurt = np.power((x - np.std(x))/np.mean(x),4)
        return kurt
    
    # 读取个人信息
    train_agg = pd.read_csv('train_agg.csv',sep='\t')
    test_agg = pd.read_csv('test_agg.csv',sep='\t')
    agg = pd.concat([train_agg,test_agg],copy=False)
    
    # 日志信息
    train_log = pd.read_csv('train_log.csv',sep='\t')
    test_log = pd.read_csv('test_log.csv',sep='\t')
    log = pd.concat([train_log,test_log],copy=False)
    
    # 用户唯一标识
    train_flg = pd.read_csv('train_flg.csv',sep='\t')
    test_flg = pd.read_csv('submit_sample.csv',sep='\t')
    test_flg['FLAG'] = -1
    del test_flg['RST']
    flg = pd.concat([train_flg,test_flg],copy=False)
    
    # 特征抽取
    log['OCC_TIM'] = log['OCC_TIM'].apply(lambda x:time.mktime(time.strptime(x, "%Y-%m-%d %H:%M:%S")))
    log = log.sort_values(['USRID','OCC_TIM'])
    log['next_time'] = log.groupby(['USRID'])['OCC_TIM'].diff(-1).apply(np.abs)
    log_time = log.groupby(['USRID'],as_index=False)['next_time'].agg({
        'next_time_mean':np.mean,
        'next_time_std':np.std,
        'next_time_min':np.min,
        'next_time_max':np.max,
        'next_time_avg':np.average,
        'next_time_median':np.median,
        'next_time_var':np.var,
        'next_time_nanmean':np.nanmean,
        'next_time_nanmeadian':np.nanmedian,
        'next_time_nanstd':np.nanstd,
        'next_time_nanvar':np.nanvar
    })
    
    log_evt = pd.DataFrame()
    log_evt['USRID'] = np.unique(log['USRID'])
    for i in range(3):
        name = 'EVT_LBL' + str(i)
        log[name] = log['EVT_LBL'].apply(lambda x: x.split('-')[i])
        # print(log['EVT_LBL' + str(i)])
        log_event = log.groupby(['USRID', name], as_index=False)['EVT_LBL'].count()
        # print(log_event)
        log_event = log_event.groupby(['USRID'], as_index=False)['EVT_LBL'].agg({
            name + 'max': np.max,
            name + 'min': np.min,
            name + 'mean': np.mean,
            name + 'std': np.std,
            name + 'median': np.median,
            name + 'average': np.average,
            name + 'nanmean': np.nanmean,
            name + 'nanstd': np.nanstd,
            name + 'nanmedian':np.nanmedian,
            name + 'var':np.var,
            name + 'nanvar':np.nanvar
        })
        log_evt = pd.merge(log_evt, log_event, on='USRID', how='left')
    
    log_action = log.groupby(['USRID', 'TCH_TYP'])['OCC_TIM'].count().unstack().reset_index()
    log_action.rename(columns={0: 'APP', 1: 'web', 2: 'H5'}, inplace=True)  # ['OCC_TIM'].
    log_action.fillna(0)
    # print(log_action.iloc[:,[1,2]].head())
    log_action['Max_action'] = log_action.iloc[:, [1, 2]].apply(Max_action_count, axis=1)
    log_action['Min_action'] = log_action.iloc[:, [1, 2]].apply(Min_action_count, axis=1)
    log_action['kurt'] = log_action.iloc[:, [1, 2]].apply(Kurt_action, axis=1)
    log_action['skew'] = log_action.iloc[:, [1, 2]].apply(Skew_action, axis=1)
    log_action['median'] = log_action.iloc[:, [1, 2]].apply(Median_action, axis=1)
    
    
    data = pd.merge(agg,flg,on=['USRID'],how='left',copy=False)
    data = pd.merge(data,log_evt,on=['USRID'],how='left',copy=False)
    data = pd.merge(data,log_action,on=['USRID'],how='left',copy=False)
    data = pd.merge(data,log_time,on = ['USRID'],how='left',copy=False)
    
    # pca = PCA(n_components='mle')
    # pca.fit(data.fillna(0))
    # print(pca.explained_variance_ratio_)
    # pcaFeature = pca.fit_transform(data)
    # pcaFeature = pd.DataFrame(pcaFeature)
    # pcaFeature['user_id'] = data['USRID']
    #
    # data = pd.merge(data, pcaFeature,on='USRID')
    
    
    print(data.info())
    
    data.to_csv('Data.csv',index=None)
    展开全文
  • 有sum,没有group by的SqlLinq怎么

    千次阅读 2015-04-08 14:50:23
    select sum ([CardPrice]) as SurplusValue from ... t by new {t.Dummy} into g select new { SurplusValue = g.Sum(p => p.CardPrice) }; 注意到上面加了个Dumy,用来强制分组的
    select sum([CardPrice]) as SurplusValue from [CardPassword] where [IsUses]='0' and createdatetime>='2014-5-24'

    EF

    from t in
                            (from t in context.CardPasswords
                                where
                                    t.IsUses == "0" &&
                                    t.CreateDateTime >= DateTime.Parse("2014-5-24")
                                select new
                                {
                                    t.CardPrice,
                                    Dummy = "x"
                                })
                            group t by new {t.Dummy}
                            into g
                            select new
                            {
                                SurplusValue = g.Sum(p => p.CardPrice)
                            };

    注意到上面加了个Dumy,用来强制分组的

    展开全文
  • 假如有表T(A,B) A B 1 2 ...hibernateTemplate.find("from T t Group By t.A order by t.A asc")这样不行。 请问还有别的方法吗? 如果前面加 select count()......的话。我怎么接收返回值啊?
  • 表结构如下: -------------------------------------------------- A1 A2 中国 99 中国 94 中国 95 美国 88 美国 70 美国 94 英国 79 英国 92 ......... 查询出结果先要按A1指定顺序分组,如...英国 79
  • group by 一般是和聚合函数一起搭配使用的,不然了也没什么意义,除了消除重复功能外,但消除重复一般使用distinct。 当我执行以下语句:select sno,cno from sc group by sno 报错如下 因为,我的s...
  • 用Group By在数据库里面 创建视图累计数目, 然后怎么把数据显示到GridView里面
  • 一般来都有这样一个说法,MYSQL 表的数据超过500万行就不行了,而在这个说法之后就是MYSQL 的group by 的性能奇差无比。如果要一句话来说,你把MYSQL 当其他数据库...
  • Baidu了一下没发现groupby方法中有什么参数能指定不要过滤掉空值,只好曲线救国了: 我们给这个列的空值赋值一个特殊的值,保证不会和其他的申请单号重复,然后再分组就OK了,效果是这样的: 效果是达到了,但总...
  • 我希望每次 GROUP BY 排序完都加 相应的合计该怎么做? 如:我select A,B,C from Table group by A,B,C查出结果为 A B C VALUE a1 b1 c1 1 a1 b1 c2 2 a1 b1 c3 3 a1 b2 c2 2 a1 b2 c3 3 a1 
  • 关于group by的用法 原理

    万次阅读 多人点赞 2018-06-14 00:26:30
    了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by 多个字段可以...
  • 我通过表一的字段来对表二进行GROUPBY数量为零的就让count为零,资源下载这样的效果用GroupBy能办到吗? GROUPBY只能对存在的数据分组,count为零,就是没有数据存在,据我所知是没有办法的,sql很久没写了,你等...
  • 使用子查询进行查询 SELECT * FROM home_content a WHERE ( SELECT count(id) FROM home_content WHERE class_link = a.class_link AND ...
  • Group By

    2018-01-09 09:21:00
    在查询分组的时候常用到Group By,在网上或者查询手册中可以非常快速的搜索到linq和lambda中怎样使用Group By进行单个字段分组。 但是实际统计的时候,多个字段分组更常见,并且这两个字段不在同一个数据表中。那么...
  • select distinct a.computername,a.mac , ...softwares nons left join users on nons.userid=users.userid left join client on nons.mac=client.mac) as a group by a.mac 怎么将这段MySQL语句转换成sybase的?
  • date name neo amt 2013/04/18 AAA B1 121 2013/04/18 bbb b1 212 2013/04/17 ccc b1 213 2013/04/18 ddd b2 232 2013/04/18 eee b2 211 ...但是 这样写会报错,group by必需 加上 date name 求解

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 439
精华内容 175
关键字:

groupby怎么用