【问题标题】:How to deal with blanks in database raw data?如何处理数据库原始数据中的空白?
【发布时间】:2014-03-31 03:17:24
【问题描述】:

我有包含交易号和卡号的原始交易数据。不幸的是,交易的每一行卡号都没有重复,所以有空白。我想按卡号汇总数据,所以我需要填空(我认为)。

我处理这个问题的方法是创建一个交易号和卡号的唯一查找,将卡号匹配回原始数据,然后按卡号汇总。

我附上了一张小图:

对于改进此过程的任何帮助将不胜感激。摆脱查找步骤会很好!

【问题讨论】:

  • 您说“交易号和卡号的唯一查找”,但您在原始表中的结果不是这两件事
  • 您真的是在数据库中工作(正如您标记 mysql)还是在 excel 中工作?
  • @scrowler:我的意思是所有交易号和相关卡号的列表。在 MySQL 术语中:选择 Transaction # 和 Card #,然后按 Transaction # 和 Card # 分组。
  • @Riz:我希望它是 Excel!这会让事情变得容易得多。可惜这个数据库有1亿行,所以我用的是MySQL

标签: mysql data-manipulation


【解决方案1】:

只是一个例子,但应该可以工作:

  SELECT r.cardId AS `Card Number`, 
         COUNT(*) AS `# of Transactions`, 
         SUM(t.sales) AS `Total Sales`
    FROM transactions t
    JOIN (SELECT transactionId, cardId 
            FROM transactions
           WHERE cardId IS NOT NULL OR 
                 cardId != ''
         ) AS r
      ON r.transactionId = t.transactionId
GROUP BY t.transactionId

基本上我在做的是:

  • 在外部选择中,我们抓取按transactionId 分组的所有结果,这样我们就可以轻松计算交易数量并计算总销售额。
  • 然后在加入时,我基本上是在过滤,所以我们从一个不为空或不为空的事务中获取cardId

结果应该和你描述的一样。

CARD NUMBER     # OF TRANSACTIONS   TOTAL SALES
       5845                     3           141
       3957                     5           177

Live DEMO


对于原始+匹配结果:

SELECT t.transactionId,
       r.cardId, 
       t.sales
  FROM transactions t
  JOIN (SELECT transactionId, cardId 
          FROM transactions
         WHERE cardId IS NOT NULL OR 
               cardId != ''
       ) AS r
    ON r.transactionId = t.transactionId

Live DEMO


要更新空结果,您可以像这样使用UPDATE

UPDATE transactions t
  JOIN (SELECT transactionId, cardId 
          FROM transactions
         WHERE cardId IS NOT NULL OR 
               cardId != ''
       ) AS m
    ON m.transactionId = t.transactionId
   SET t.cardId = m.cardId 
 WHERE t.cardId IS NULL OR 
       t.cardId = ''

Live DEMO

【讨论】:

  • 伟大的答案大奖赛!效果很好。如何通过这样做来更新原始表?理想情况下,可以通过匹配交易 ID 来填写卡号栏中的空白。这有意义吗?
  • 大奖赛。你传奇。完美运行。谢谢;)
猜你喜欢
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 2016-10-01
  • 2011-08-19
  • 2019-11-07
  • 2013-10-12
  • 2014-06-10
相关资源
最近更新 更多