嗨,我正在尝试使用看起来像这样的数据集执行以下操作:
letter number
a 1
a 2
a 1
a 1
a 3
a 4
a 2
a 4
b 1
b 3
b 4
b 3
b 2
b 5
b 1
b 1
数据集是我运行的子查询的结果。我想将数据格式化为如下所示,以便我可以标记计数大于 3 的数据
letter number number_count
a 1 3
a 2 2
a 3 1
a 4 2
b 1 3
b 2 1
b 3 2
b 4 1
b 5 1
因此,对于字母列中的每个值,我需要将 col 2 中的每个唯一数字计数并显示在值本身旁边。我已经做了很多搜索来尝试解决这个问题,但无法获得计数、计数非重复、过度或其他代码的任何变体来工作,所以我要么低估了问题,要么更有可能,我不确定如何措辞我的搜索,所以我找到了我正在寻找的答案。
任何帮助将不胜感激,我正在使用sql开发人员访问oracle 11g数据库。
所以我认为以下是你要找的:
select letter, number, count(letter) as number_count from table group by letter, number;
我又添加了两行数据来显示一个示例,其中您将有一个结果被标记。
WITH
sub_q AS (
SELECT 'a' AS letter_column, 1 AS value_column FROM Dual UNION ALL
SELECT 'a', 2 FROM Dual UNION ALL
SELECT 'a', 1 FROM Dual UNION ALL
SELECT 'a', 1 FROM Dual UNION ALL
SELECT 'a', 3 FROM Dual UNION ALL
SELECT 'a', 4 FROM Dual UNION ALL
SELECT 'a', 2 FROM Dual UNION ALL
SELECT 'a', 4 FROM Dual UNION ALL
SELECT 'b', 1 FROM Dual UNION ALL
SELECT 'b', 3 FROM Dual UNION ALL
SELECT 'b', 4 FROM Dual UNION ALL
SELECT 'b', 3 FROM Dual UNION ALL
SELECT 'b', 2 FROM Dual UNION ALL
SELECT 'b', 5 FROM Dual UNION ALL
SELECT 'b', 1 FROM Dual UNION ALL
SELECT 'b', 1 FROM Dual UNION ALL
SELECT 'b', 1 FROM Dual UNION ALL
SELECT 'b', 1 FROM DUal
)
SELECT
letter_column,
value_column,
COUNT(value_column) AS value_count,
CASE
WHEN COUNT(value_column) > 3 THEN 1
ELSE NULL
END AS flag_gt_3
FROM sub_q
GROUP BY
letter_column,
value_column
ORDER BY
letter_column,
value_column
;