我有以下查询来计算每个process_track_id
在表中出现的次数:
SELECT
a.process_track_id,
COUNT(1) AS 'num'
FROM
transreport.process_name a
GROUP BY
a.process_track_id
返回以下结果:
process_track_id | num
1 14
2 44
3 16
5 8
6 18
7 17
8 14
这很棒。现在是我被卡住的部分。我想得到下表:
num count
8 1
14 2
16 1
17 1
18 1
44 1
其中num是第一个表中的不同计数,count是频率发生的次数。
这是我尝试过的(它是一个子查询,但我没有按方法出售),我还没有能够让它继续工作。我是SQL的新手,我想我错过了语法的一些关键方面。
SELECT
X.id_count,
count(1) as 'num_count'
FROM
(SELECT
a.process_track_id,
COUNT(1) AS 'id_count'
FROM
transreport.process_name a
GROUP BY
a.process_track_id
--COUNT(1) AS 'id_count'
) X;
有什么想法吗?
可能要记住,这可能必须在具有至少100万条记录的数据库上运行,并且我无法在此过程中创建新表。
谢谢!
答案 0 :(得分:1)
以下是您驾驶的子查询方法:
SELECT id_count, COUNT(*) AS 'num_count'
FROM (SELECT a.process_track_id
,COUNT(*) AS 'id_count'
FROM transreport.process_name a
GROUP BY a.process_track_id
)sub
GROUP BY id_count
不确定是否有更好的方法,因为无论如何聚合都需要运行一次。
答案 1 :(得分:1)
试试这个
SELECT x.num, COUNT(*) AS COUNT
FROM (
SELECT
a.process_track_id, -- <--- You may removed this column
COUNT(*) AS 'num'
FROM
transreport.process_name a
GROUP BY
a.process_track_id
) X
GROUP BY X.num