解决MySQL左联LIFT JOIN做求和数据出现重复数据。

SELECT
    GROUP_CONCAT( DISTINCT fa.nickname ),
    GROUP_CONCAT( DISTINCT ev.facility_id ),
    CONVERT (
        SUM( ev.income ),
    DECIMAL ( 10, 2 )) AS su,
    COUNT( ev.income ),
    GROUP_CONCAT( ev.income )
FROM
    every_day_income AS ev
    LEFT JOIN ( SELECT GROUP_CONCAT( DISTINCT nickname ) AS nickname, facility_id FROM facility GROUP BY facility_id ) AS fa ON ev.facility_id = fa.facility_id
GROUP BY
    ev.facility_id
ORDER BY
    su DESC

第一天写好的查寻语句,第一天可以用的,但今天用的时候,发现求和重复出现,导致数据错误。

网上查寻了,主要还是左联的时候,右边表中的数据有多条满足条件,导致左联的时候,左边的数据被重复计算多次。

根据碰到的情况,将右边表中的的数据进行去重,就是LEFT JOIN中的表去重,解决问题。

原文地址:https://www.cnblogs.com/sidianok/p/12667831.html

时间: 2024-08-03 05:16:59

解决MySQL左联LIFT JOIN做求和数据出现重复数据。的相关文章

数据库删除数据表重复数据,只留下ID较小的行

删除表中重复数据,留下ID比较小的行 delete from 表 where [重复字段] in (select [重复字段] from 表 group by 字段 having count([字段]) > 1) and ID not in (select min(ID) from [表] group by [字段] having count([字段])> 1)

linq 获取不重复数据,重复数据 var unique = arr.GroupBy(o => o).Where(g => g.Count() == 1) .Select(g => g.ElementAt(0));

static void Main(string[] args) { int[] arr = { 1, 3, 3, 3, 3, 4, 5, 4, 5, 8, 9, 3 }; //不重复 var unique = arr.GroupBy(o => o).Where(g => g.Count() == 1) .Select(g => g.ElementAt(0)); var uniqueList = arr.Distinct<int>().ToList(); foreach(var

查找数据库中重复数据T-SQL

查找数据库中重复数据T-SQL ========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid) 如果表中有大量数据,但是重复数据比较少,那么可以用下面的语句提高

何时使用重复数据删除技术?

大数据与海量数据已经成为数据中心的主要业务,而重复数据删除与压缩是可以节约大量数据存储的技术. 只有备份还不够.重复数据删除与压缩即将成为主存储的必备功能. 重复数据删除是一种压缩技术,通过识别重复内容,进行去重,并在对应的存储位置留下指针,来最小化数据量.这个指针通过给定大小的数据模式进行哈希创建. 也许在于你已经在备份系统上实施了重复数据删除备份和归档多年,问题在于:是否需要在主存储上运用重复数据删除与压缩技术? 并非所有的重复数据删除技术都一样.IT专业人士在将其添加到主存储环境之前,应该

《谁说菜鸟不会数据分析》数据处理 之 数据清洗--重复数据的处理

重复数据的处理 识别重复数据 删除重复数据 一.识别重复数据 函数法 高级筛选法 条件格式法 数据透视法 函数法 函数:=countif(范围,条件) 可以看出在列字段为A的范围内,"男"重复4次,"女"重复4次.那么,看到的重复项是第几个重复项呢?在countif函数中调节范围即可:=COUNTIF(A$2:A2,A2)----------A$2固定从A列的第二行开始,A2会变动,下拉时会变成A3,A4,A5...; ||   A$2:Ai: 范围从A的第2行到第

Windows 8.1 重复数据删除——规划部署(二)

一.规划部署目标   Windows 8.1&Server 2012 的重复数据删除设计为安装到主要数据卷上,而无需添加任何附加的专用硬件.这意味着你可以安装和使用该功能,而不会影响服务器上的主要工作负载.默认设置为非侵入性的,因为它们允许在处理特定文件之前数据"存留时间"达到五天,默认的最小文件大小为 32 KB.该实现是为低内存和 CPU 利用率而设计的.如果内存利用率变高,则重复数据删除功能将等待可用的资源.管理员可以根据所涉及数据的类型以及该卷或特定文件类型的更改频率和

Windows 8.1 重复数据删除——概念(一)

功能描述 重复数据删除指的是在数据中查找和删除重复内容,而不会影响其保真度或完整性.其目标是通过将文件分割成大小可以改变 (32-128 KB) 的小区块.确定重复的区块,然后为每个区块保留一个副本,从而在更小的空间中存储更多的数据.区块的冗余副本由对单个副本的引用所取代.区块会进行压缩,然后以特殊的容器文件形式组织到 System Volume Information 文件夹中. 针对卷启用了重复数据删除而且对数据进行优化之后,卷中会包含以下内容: 未优化的文件:例如,未优化的文件可以包括:无

Hyper-v Server重复数据删除技术

Hyper-v Server重复数据删除技术 老衲听说windows Server 2012中新增了一项技术叫做重复数据删除,据说这个重复数据删除可以大大的节省磁盘的空间,下面我们来看看什么是重复数据删除: 重复数据删除指的是在数据中查找和删除重复内容,而不会影响其保真度或完整性.其目标是通过将文件分割成大小可以改变 (32-128 KB) 的小区块.确定重复的区块,然后为每个区块保留一个副本,从而在更小的空间中存储更多的数据.区块的冗余副本由对单个副本的引用所取代.区块会进行压缩,然后以特殊的

Windows Server 2012 重复数据删除

存储一直是企业降低运营成本的一项重大阻力,虽然近年来存储的成本一直在降低,但是企业数据量的增长速度却远远超过存储成本的降低速度,因此如何降低存储给企业带来的压力也是IT人员的一大考验 在Windows Server 2012中微软带来了一项令人惊喜的功能,他的名字叫做重复数据删除,重复数据删除使得 Windows Server 2012 能够在更少的物理空间中存储更多的数据,并获得比以前版本的 Windows 操作系统明显更高的存储效率. 简单阐述下重复数据删除的原理,在Windows Serv