Group By


數據表說明

CREATE TABLE [FileList](
    [ProjectId] INT NOT NULL ON CONFLICT FAIL, 
    [SensorId] VARCHAR(50) NOT NULL ON CONFLICT FAIL, 
    [FileName] VARCHAR(50) NOT NULL ON CONFLICT FAIL, 
    [StartTime] DATETIME NOT NULL, 
    [EndTime] DATETIME NOT NULL, 
    [FileStatus] VARCHAR(20) DEFAULT Uncompleted, 
    [RowId] INTEGER PRIMARY KEY AUTOINCREMENT, 
    [Id] INT NOT NULL)

RowId作為主鍵,

用projectid,sensorid,filename三個字段作為記錄是否重復的判斷 

(projectid和sensorid,可以定位到id,所以也可以用id和filename作為記錄是否重復的判斷)

 

1.篩選全部數據

select * from filelist

顯示有1854條數據

 

2.分組篩選,過濾掉重復的數據(重復的數據僅顯示一條)

select * from filelist
group by projectid,sensorid,filename

--group by id,filename

 

顯示有1552條數據,說明重復數據個數1854-1552=302

 

3.篩選出單條重復的數據(僅顯示一條)

select * from filelist
group by id,filename
having count(*) > 1

顯示有302條數據

 

重復數據,篩選出rowid較小的

select *
,min(rowid) 
from filelist
group by id,filename
having count(*) > 1

 

4.篩選出所有的重復的數據

select a.*,b.[count] from filelist as a
inner join
(select *,count(*) as count from filelist
group by id,filename
having count(*) > 1) as b
on 
a.id = b.id
and 
a.filename = b.filename

顯示有604條數據

 

5.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM