`

sql中分组,除了group by之外的用法

    博客分类:
  • SQL
 
阅读更多

表(kzw): 
id       xianlu_id       point_name       x                 y                       h                   biaod_id 
  1               19                   草桥     314594.654     494252.073                                 
  2               19                   草桥     314594.654     494252.073                   
  3               19               北宫门     315032.232     492997.054                                               
  4               19               北宫门     315032.232     492997.054                   
  5               19               北宫门     315032.232     492997.054                                 1 
  6               18         北三环路口   311013.473     496936.988                                 1 
  7               18         北三环路口   311013.473     496936.988   
  8               18         北三环路口   311013.473     496936.988     40.77 

筛选结果: 

id       xianlu_id       point_name       x                 y                       h                   biaod_id 
  1               19                   草桥     314594.654     494252.073                                 
  3               19               北宫门     315032.232     492997.054                                               
  5               19               北宫门     315032.232     492997.054                                 1 
  6               18         北三环路口   311013.473     496936.988                                 1 
  7               18         北三环路口   311013.473     496936.988   
  8               18         北三环路口   311013.473     496936.988     40.77 

数据表规律: 
id(自动编号),xianlu_id(数字),point_name(文本),x(文本),y(文本),h(文本),biaod_id(文本)。其中xianlu_id,point_name,x,y,h,biaod_id六个字段唯一确定一个数,为联合主键 

实现的效果: 
通过xianlu_id,point_name,x,y,h,biaod_id六个字段共同作用,去除重复项,但是要保证能查询出id字段 

我的方法: 

方法一:利用distinct去除重复项 

SELECT   distinct   point_name,x,y,h,xianlu_id,biaod_id   from   kzw   WHERE   xianlu_id   =   "&xianlu_id& "   ORDER   BY   point_name   ASC 

结果: 
显示记录正确,但是没有办法查询出id字段 


方法二:利用distinct去除重复项并取得id

SELECT distinct point_name,x,y,h,xianlu_id,biaod_id,max(id) from kzw WHERE xianlu_id = "&xianlu_id& " ORDER BY point_name ASC  

******************************************************************

例:

select a,b,c,d,e from table group by a,b,c,d

肯定是错得了,不过有时候业务需要,不能根据e分组。

这个时候就可以:select a,b,c,d,sum(case when e like '%*%' then 1 else then 0 end) group by a,b,c,d,e这里要根据e的情况而定,只适合部分需求

另外

可以先用function将要获取的值获取,然后 select a.* from table(function()) as a group by .....


分享到:
评论

相关推荐

    SQL中GROUP BY的用法

    SQL中group by的详细用法

    Sequelize中用group by进行分组聚合查询

    GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的字段中,如果没有使用聚合函数就必须出现在ORDER BY子句中。分组查询后,查询结果为一个或多个列分组后的结果集。 GROUP BY语法 SELECT 列名, ...

    简单讲解sql语句中的group by的使用方法

    group by 就是依据by 后面的规则对数据分组,所谓的分组就是讲数据集划分成若干个’小组’,针对若干个小组做处理。 2.语法规则 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE ...

    SQL语句中Group BY 和Rollup以及cube用法.txt

    SQL Server中的用法为group by colomn with [rollup|cube],首先要弄明白rollup 和cube,就要知道group by的用法,group by 为对列进行分组,只展现分组统计的值,而 rollup 为分层次展现,cube 为展现列中所有层次...

    Oracle中分组查询group by用法规则详解

    Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。 使用having子句 限制返回的...

    mysql使用GROUP BY分组实现取前N条记录的方法

    本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...

    深入浅析SQL中的group by 和 having 用法

    一、sql中的group by 用法解析:  Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。  作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理...

    SQL语句中Group BY 和Rollup以及cube用法

    SQL语句中Group BY 和Rollup以及cube用法

    详解SQL中Group By的用法

    GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组,记下来通过本文给大家介绍SQL中Group By的用法,需要的朋友参考下吧

    浅析SQL语句中GROUP BY的用法

    GROUP BY 是分组查询, 一般 GROUP BY 是和 聚合函数配合使用,你可以想想 你用了GROUP BY 按 ITEM.ITEMNUM 这个字段分组,那其他字段内容不同,变成一对多又改如何显示呢,比如下面所示 A B 1 abc 1 bcd 1 asdfg ...

    sql中的 where 、group by 和 having 用法解析

    --sql中的 where 、group by 和 having 用法解析 --如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称',COUNT(*)...

    SQL SERVER 分组求和sql语句

    您可能感兴趣的文章:分组后分组合计以及总计SQL语句(稍微整理了一下)MYSQL每隔10分钟进行分组统计的实现方法mysql使用GROUP BY分组实现取前N条记录的方法详解MySQL中的分组查询与连接查询语句sql server如何利用...

    GROUP BY子句(rollup,cube,grouping sets)实例说明

    GROUP BY 子句是 SQL 语言中用于分组数据的关键字,它可以根据一个或多个列对数据进行分组,并对每个分组应用聚合函数,以便计算和输出所需的结果。GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的...

    总结下sqlserver group by 的用法

    主要介绍了总结下sqlserver group by 的用法 ,需要的朋友可以参考下

    浅谈sql语句中GROUP BY 和 HAVING的使用方法

    在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。 SELECT SUM(population) FROM ...

Global site tag (gtag.js) - Google Analytics