按天去除重复数据,为0则取0,否则取最大的那个值

测试数据:
mysql> select * from t2;
+----+--------+---------------------+------------+
| id | userid | inputDate           | infoStatus |
+----+--------+---------------------+------------+
|  1 |      1 | 2014-07-11 00:00:00 |      20013 |
|  2 |      1 | 2014-07-11 00:00:00 |          0 |
|  3 |      2 | 2014-07-12 00:00:11 |      20015 |
|  4 |      2 | 2014-07-12 00:00:22 |      20013 |
|  5 |      2 | 2014-07-14 00:00:00 |          0 |
|  6 |      2 | 2014-07-15 00:00:00 |      20013 |
|  7 |      2 | 2014-07-15 00:00:00 |          0 |
|  8 |      2 | 2014-07-16 00:00:00 |          0 |
|  9 |      2 | 2014-07-13 00:00:00 |      20013 |
| 10 |      2 | 2014-07-13 00:00:00 |          0 |
| 11 |      2 | 2014-07-14 00:00:00 |          0 |
+----+--------+---------------------+------------+

查询sql:

select id,userid,date(inputDate) as date,max(infoStatus) as m,min(infoStatus) as i,if(min(infoStatus)=0,0,max(infoStatus)) as max from t2 where infoStatus = 0 or infoStatus <= 99999 group by date;

回执结果:
+----+--------+------------+-------+-------+-------+
| id | userid | date       | m     | i     | max   |
+----+--------+------------+-------+-------+-------+
|  1 |      1 | 2014-07-11 | 20013 |     0 |     0 |
|  3 |      2 | 2014-07-12 | 20015 | 20013 | 20015 |
|  9 |      2 | 2014-07-13 | 20013 |     0 |     0 |
|  5 |      2 | 2014-07-14 |     0 |     0 |     0 |
|  6 |      2 | 2014-07-15 | 20013 |     0 |     0 |
|  8 |      2 | 2014-07-16 |     0 |     0 |     0 |
+----+--------+------------+-------+-------+-------+

我的思路是按照时间分组,并同时查询最小,跟最大的,如果最小的为0,那max字段就为0,否则就取最大的那个

按天去除重复数据,为0则取0,否则取最大的那个值

时间: 2024-10-10 23:41:51

按天去除重复数据,为0则取0,否则取最大的那个值的相关文章

List集合去除重复数据

[转自]Java中List集合去除重复数据的方法 1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { if (list.get(j).equals(list.get(i))) { list.remove(j); }

mysql 去除重复数据 语句

纠结的过程: mysql> select * from role group by role_name,deleted; +---------+-----------+---------+ | role_id | role_name | deleted | +---------+-----------+---------+ | 2 | xue | 12 | | 1 | zhao | 12 | | 3 | zhao | 13 | +---------+-----------+---------+

在一个大DataTable的基础上去除重复数据,分别创建2个小DataTable,省去多次数据库连接,提高效率,加快程序运行

DataTable tab = new DataTable(); tab = DBUtil.GetDataSet(strCmd, "TESTA.V_YHJ_VIP_WX_XSMX").Tables[0]; 创建一个小表: DataView view = new DataView(tab); DataTable orderTable = view.ToTable(true, "ORDERDATE", "MEMBER_CODE", "INV

JAVA数组去除重复数据

一.用List集合实现   int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<str.length; i++) { if(!list.contains(str[i])) { list.add(str[i]); } } System.out.println("去除重复后的list集合"+list); 输出结果是

list去除重复数据

在java里面要想去除list中的重复数据可以使用两种方式实现: 1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { if (list.get(j).equals(list.get(i))) { list.remov

Java实现数组去除重复数据的方法详解

一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<str.length; i++) { if(!list.contains(str[i])) { list.add(str[i]); } } System.out.println("去除重复后的list集合"+list); 输出结果是:

mysql 去除重复数据

1. 问题描述 有时load或者insert操作导致 表数据有重复 2. 解决方案 通过临时表.主键id.倒腾去重 示例 2.1  create table student( name varchar(30) not null default '', age smallint(3) not null default 0, love varchar(50) not null default '' ) 插入一些数据......(包含重复) insert into student(name,age,l

sql去除重复数据

1,采用存储过程添加测试数据 CREATE PROCEDURE NewProcedure()BEGINDECLARE i INT;SET i=1;WHILE i<50000 DO INSERT INTO user_new (id,name,phone,sex) VALUES (i,i,i,i); SET i = i + 1;END WHILE;END; 两次插入,修改后一次存储过程的id取值,于是得到了name,phone,sex重复的5W条数据(时间有限,未操作更大数量) 2,数据去重 常见方

数据库去除重复数据

小标记一下,数据库大量重复数据去除 下面是一个根据重复的name  移除的 create table temp select max(id) as id  from table1 group by name ;//name分组  拿到最大id  保存到临时表 delete table1 where id not in(select id from temp); 以上仅供参考,其他的比葫芦画瓢