尝试在 A 列中查找 B 列的实例数并在子查询中输出结果

Posted

技术标签:

【中文标题】尝试在 A 列中查找 B 列的实例数并在子查询中输出结果【英文标题】:Trying to find the number of instances of Column B in Column A and output a result in a subquery 【发布时间】:2021-05-18 07:04:12 【问题描述】:

所以,我正在尝试执行以下操作:如果 Store 有 1 个水果,则输出“SINGLE”。如果它有超过 1 个水果,则输出 'MULTIPLE'。我已经在一个单独的 SQL 文件中尝试过,只查询表:

SELECT STORE, FRUIT
CASE
WHEN COUNT(FRUIT) > 1
THEN 'MULTIPLE'
ELSE 'SINGLE'
AS NO_FRUIT
FROM STORES
GROUP BY STORE, FRUIT;

这似乎给出了我想要的输出,类似于:

STORE      |FRUIT |NO_FRUIT
---------------------------
SUPERMARKET|TOMATO|MULTIPLE
---------------------------
WETMARKET  |APPLE |SINGLE

我正在尝试在选择查询本身中执行此操作,该查询从我需要的许多其他表中选择许多其他字段,我认为这会使其成为子查询。我不太确定如何使它工作。任何帮助表示赞赏!

【问题讨论】:

【参考方案1】:

实际上你的逻辑表明你想单独按商店聚合,然后检查水果的数量:

SELECT STORE,
       CASE WHEN COUNT(*) > 1 THEN 'MULTIPLE' ELSE 'SINGLE' END AS NO_FRUIT
FROM STORES
GROUP BY STORE;

编辑:如果您想保留所有列,那么您可以使用COUNT 作为解析函数。

SELECT STORE, FRUIT,
       CASE WHEN COUNT(*) OVER (PARTITION BY STORE) > 1
            THEN 'MULTIPLE' ELSE 'SINGLE' END AS NO_FRUIT
FROM cte
ORDER BY STORE;

【讨论】:

我遇到的几个问题:1)我仍然需要显示所有行,所以我不应该使用 GROUP BY。 2) 有没有办法把它变成一个子查询,已经用于现有的 select 语句? @Azaqi 然后使用COUNT 作为解析函数。 看起来有效!等待我的前辈确认这是正确的。一旦我明白了,我会接受你的回答:)

以上是关于尝试在 A 列中查找 B 列的实例数并在子查询中输出结果的主要内容,如果未能解决你的问题,请参考以下文章

在excel中查找两列的组合,一列中有一个条件

EXCEL 如何查询一个数据是不是在某一列中

在 Python Pandas 中查找两列的交集 -> 字符串列表

EXCEL如何在B列中取包含于A列的数,并在B列中标红

excel中判断一个表中的某一列的数据在另一个表中的某一列中是不是存在

pandas:查找部分字符串并在新列中使用它