尝试在列A中查找列B的实例数并在子查询中输出结果
Trying to find the number of instances of Column B in Column A and output a result in a subquery
所以,我正在尝试执行以下操作:如果 Store 有 1 个水果,则输出 'SINGLE'。如果它有超过 1 个水果,则输出 'MULTIPLE'。我在一个单独的 SQL 文件中尝试过这个,只查询 table:
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
我正在尝试在 select 查询本身中执行此操作,该查询本身 selecting 来自我需要的许多其他 table 的许多其他字段,我认为这将使这变成一个子查询。我不太确定如何让它工作。感谢您的帮助!
其实你的逻辑表明你想单独按商店聚合,然后检查水果的数量:
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;
所以,我正在尝试执行以下操作:如果 Store 有 1 个水果,则输出 'SINGLE'。如果它有超过 1 个水果,则输出 'MULTIPLE'。我在一个单独的 SQL 文件中尝试过这个,只查询 table:
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
我正在尝试在 select 查询本身中执行此操作,该查询本身 selecting 来自我需要的许多其他 table 的许多其他字段,我认为这将使这变成一个子查询。我不太确定如何让它工作。感谢您的帮助!
其实你的逻辑表明你想单独按商店聚合,然后检查水果的数量:
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;