根据另一列中的值比较一列中的两个值

Posted

技术标签:

【中文标题】根据另一列中的值比较一列中的两个值【英文标题】:Compare two values from one column based on values in another 【发布时间】:2020-11-24 06:09:05 【问题描述】:

我有一个表格,我需要根据它们在另一列中的名称比较两个值,以查看哪个更大。基本上:

If **name1** -> value1
If **name2** -> value2
Compare **value1 > value2**

我已经进行了总结,但我找不到使用CASE WHEN 方法来解决这种情况的方法。

【问题讨论】:

【参考方案1】:

您可以PIVOT 数据并拥有当前行中的所有值。然后,随意比较它们:

SELECT [Id]
      ,[name1], [name2], [name3], [name4]
FROM [my_table]
PIVOT
(
    MAX([value]) FOR [column] IN ([name1], [name2], [name3], [name4])
) PVT

SELECT [Id]
      ,MAX(CASE WHEN [column] = 'name1' THEN [value] END) AS [name1]
      ,MAX(CASE WHEN [column] = 'name2' THEN [value] END) AS [name2]
      ,MAX(CASE WHEN [column] = 'name3' THEN [value] END) AS [name3]
      ,MAX(CASE WHEN [column] = 'name4' THEN [value] END) AS [name4]
FROM [my_table]
GROUP [Id];

【讨论】:

好吧,你从来没有提到数据量?我可以给你另一种技术,但你需要分享更多细节。 列名来自另一个 ID 表并且正在增长。目前它有大约 20 个不同的名称,它们是不同指标的名称。我找到了一些解决方法,并在您的解决方案中添加了一个 WHERE 子句来过滤我想要的名称。 @Yana 你也可以试试第二种方法。最好的方法是在新表中以PIVOT 的方式预先计算值,因为不需要实时执行此操作。

以上是关于根据另一列中的值比较一列中的两个值的主要内容,如果未能解决你的问题,请参考以下文章

通过来自两个文件的另一列中的对应值聚合一列中的值

根据另一列中的值从一列中减去值(SQL)

在 pandas 中,如何根据一列中的唯一值创建列,然后根据另一列中的值填充它?

根据另一列中的值删除一列的重复项,Python,Pandas

Google BigQuery - 根据另一列中的值减去一列的 SUM

pandas:根据另一列中的值获取与相应索引的确切对应值