尝试在 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 列的实例数并在子查询中输出结果的主要内容,如果未能解决你的问题,请参考以下文章
在 Python Pandas 中查找两列的交集 -> 字符串列表