jjzjj

mysql - 填充表格中缺失的行

coder 2023-10-20 原文

起初我的问题可能看起来很简单并且之前已经被问过。请耐心等待 - 我认为这是一个独特的问题。

表 A 有列 State , County , Month , Year , 和 Rate .每个州、县的复合 Material 都以不同的日期和比率多次列出。有些行设置了州和县,该行中的其他所有内容均为 NULL。

表 B 有每个月和每年的违约率。列是 Month , Year , 和 Rate .在这张表中,我有几年的默认数据。

因此,对于表 A 中的每个州、县组合,我想用表 B 中的数据填充任何缺失的数据。

我创建了一个看起来像表 A 的表 C,除了所有数据都用表 B 中的默认数据填充。然后我尝试将表 A 和表 C 联合在一起。但我最终遇到了两个问题。

首先,我最终得到了重复的行,除了比率之外,其他所有内容都相同。在这种情况下,我只想保留最初在表 A 中的行(而不是“默认率”)。

其次,我以设置了州和县但其他所有内容均为 NULL 的行结束。我需要将这些行替换为每个违约率的行。

所以最后我想为每个 State,County,Month,Year 组合各占一行。

是否可以按照我所描述的那样组合表格。

如果您需要任何澄清,请告诉我。谢谢。

表 A 有几千行。每个州、县组合的 1 到 48 行:

+-------+--------+-------+------+------+
| State | County | Month | Year | Rate |
+-------+--------+-------+------+------+
| NY    | Albany | 1     | 2011 | ###  |
| NY    | Albany | 2     | 2011 | ###  |
...
| NY    | Albany | 12    | 2011 | ###  |
| NY    | Albany | 1     | 2012 | ###  |
...
| NY    | Albany | 12    | 2012 | ###  |
| NY    | Monroe | 1     | 2011 | ###  |
...
| NY    | Monroe | 12    | 2011 | ###  |
| NY    | Essex  | NULL  | NULL | NULL |
+-------+--------+-------+------+------+

表 B 有 36 行。 3 年内每个月一行:

+-------+------+------+
| Month | Year | Rate |
+-------+------+------+
| 1     | 2011 | ***  |
| 2     | 2011 | ***  |
| ...   |      |      |
| 12    | 2011 | ***  |
| 1     | 2012 | ***  |
| ...   |      |      |
| 12    | 2012 | ***  |
| 1     | 2013 | ***  |
| ...   |      |      |
| 12    | 2013 | ***  |
+-------+------+------+

结果表的行数比表 A 多。每个 State,County 组合至少有默认表中的 36 行:

+-------+--------+-------+------+------+
| State | County | Month | Year | Rate |
+-------+--------+-------+------+------+
| NY    | Albany |     1 | 2011 | ###  |
| ...   |        |       |      |      |
| NY    | Albany |    12 | 2011 | ###  |
| NY    | Albany |     1 | 2012 | ###  |
| ...   |        |       |      |      |
| NY    | Albany |    12 | 2012 | ###  |
| NY    | Albany |     1 | 2013 | ***  |
| ...   |        |       |      |      |
| NY    | Albany |    12 | 2013 | ***  |
| NY    | Monroe |     1 | 2011 | ###  |
| ...   |        |       |      |      |
| NY    | Monroe |    12 | 2011 | ###  |
| NY    | Monroe |     1 | 2012 | ***  |
| ...   |        |       |      |      |
| NY    | Monroe |    12 | 2012 | ***  |
| NY    | Monroe |     1 | 2013 | ***  |
| ...   |        |       |      |      |
| NY    | Monroe |    12 | 2013 | ***  |
| NY    | Essex  |     1 | 2011 | ***  |
| ...   |        |       |      |      |
| NY    | Essex  |    12 | 2011 | ***  |
| NY    | Essex  |     1 | 2012 | ***  |
| ...   |        |       |      |      |
| NY    | Essex  |    12 | 2012 | ***  |
| NY    | Essex  |     1 | 2013 | ***  |
| ...   |        |       |      |      |
| NY    | Essex  |    12 | 2013 | ***  |
+-------+--------+-------+------+------+

key :***是默认表中的比率。 ###是另一个表的费率

最佳答案

我认为最好的方法是生成地理和时间的所有组合。您可以通过从 tablea 中获取 statecounty 并与 year 交叉连接来做到这一点来自 tableb 的月份。然后用left join查看tablea有没有值。如果是这样,请选择它。否则,从 tableb 中取值:

select sc.state, sc.county, ym.year, ym.month, coalesce(a.rate, ym.rate) as rate
from (select distinct state, county from tablea) sc cross join
     tableb ym left outer join
     tablea a
     on a.state = sc.state and a.county = sc.county and
        a.year = ym.year and a.month = ym.month ;

+7 个字符

关于mysql - 填充表格中缺失的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297594/

有关mysql - 填充表格中缺失的行的更多相关文章

  1. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  2. ruby - 匹配大写字母并用后续字母填充,直到一定的字符串长度 - 2

    我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种

  3. ruby-on-rails - Prawn - 表格单元格内的链接 - 2

    我正在尝试用Prawn生成PDF。在我的PDF模板中,我有带单元格的表格。在其中一个单元格中,我有一个电子邮件地址:cell_email=pdf.make_cell(:content=>booking.user_email,:border_width=>0)我想让电子邮件链接到“mailto”链接。我知道我可以这样链接:pdf.formatted_text([{:text=>booking.user_email,:link=>"mailto:#{booking.user_email}"}])但是将这两行组合起来(将格式化文本作为内容)不起作用:cell_email=pdf.make_c

  4. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  5. ruby - 如何使用 Ruby 将 CSV 文件读入 HTML 表格? - 2

    我正在尝试将一个简单的CSV文件读入HTML表格以在浏览器中显示,但我遇到了麻烦。这就是我正在尝试的:Controller:defshow@csv=CSV.open("file.csv",:headers=>true)end查看:输出:NameStartDateEndDateQuantityPostalCode基本上我只获取标题,而不会读取和呈现CSV正文。 最佳答案 这最终成为最终解决方案:Controller:defshow#OpenaCSVfile,andthenreaditintoaCSV::Tableobjectforda

  6. ruby-on-rails - 缺失区域;使用 :region option or export region name to ENV ['AWS_REGION' ] - 2

    我知道还有其他相同的问题,但他们没有解决我的问题。我不断收到错误:Aws::Errors::MissingRegionErrorinBooksController#create,缺少区域;使用:region选项或将区域名称导出到ENV['AWS_REGION']。但是,这是我的配置开发.rb:config.paperclip_defaults={storage::s3,s3_host_name:"s3-us-west-2.amazonaws.com",s3_credentials:{bucket:ENV['AWS_BUCKET'],access_key_id:ENV['AWS_ACCE

  7. ruby - 如何使用 Nokogiri 解析纯 HTML 表格? - 2

    我想用Nokogiri解析HTML页面。页面的一部分有一个表,它没有使用任何特定的ID。是否可以提取如下内容:Today,3,455,34Today,1,1300,3664Today,10,100000,3444,Yesterday,3454,5656,3Yesterday,3545,1000,10Yesterday,3411,36223,15来自这个HTML:TodayYesterdayQntySizeLengthLengthSizeQnty345534345456563113003664354510001010100000344434113622315

  8. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  9. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

  10. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

随机推荐