Google SQL - 返回依赖于 2 列的最常见字符串

问题描述 投票:0回答:1

我需要找到表中最常见的文本值,但我很难将我找到的解决方案应用到我的数据集。

我的表格结构如下:

A 栏 B 栏
瓦尔A 瓦尔a
瓦尔A 瓦尔b
瓦尔A 瓦尔a
瓦尔B 瓦尔a
瓦尔B 瓦尔b
瓦尔B 瓦尔b

我已经创建了使用 count 和 max 函数与 CTE 的计算模式的基本概念,但我真的不知道如何返回我需要的表。

我期待的是这样的表格:

A 栏 B 栏
瓦尔A 瓦尔a
瓦尔B 瓦尔b

Val a 是 Val A 中最常见的,b 是 B 中最常见的。

A 列中有数百个唯一值,我正在尝试解决这个问题,以便如果最频繁的值为 null,则可以返回 B 列中第二个最频繁的值。

感谢您的指导!

WITH counts AS(
  SELECT
  ColA,
  COUNT(ColB) AS ColB_count
  FROM table
  GROUP BY ColA
)

SELECT ColA, ColB_count
FROM counts
WHERE ColB_count = (
  SELECT MAX(ColB_count)
  FROM counts
);
sql math
1个回答
0
投票

我想说这就是你试图用你尝试的sql做的事情:

with cte1 as (
select ColA, ColB, count(ColB) as CountOfColB
from #T
group by ColA, ColB
),
cte2 as (
select
    ColA, Max(CountOfColB) as total
from cte1
group by ColA
)
select cte1.ColA, cte1.ColB --,cte1.CountOfColB
from cte1
inner join cte2
on cte1.ColA = cte2.ColA
and cte1.CountOfColB = cte2.total
order by cte1.ColA, cte1.ColB
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.