如何将第2列与其他列一起计算

时间:2017-04-11 05:53:36

标签: sql oracle oracle11g

SELECT DISTINCT T1.ID , COUNT(T2.OPT_ID) 
FROM TABLE1 , TABLE2
WHERE T1.TRACK_ID = T2.TRACK_ID
GROUP BY T1.ID, T2.OPT_ID

输出:

ID (COLUMN1)        OPT_ID(COLUMN 2)
1000000001082157827 132665
1000000001082157827 132564
1000000001082157827 117345
1000000001082157827 11565
1000000001082157827 124546
1000000001082157827 117495
1000000001082157827 11564
1000000001082157827 11564
1000000001082157827 117495

如果我计算T2.OPT_ID它只计算每个T1.ID 1,但如果我只计算t2.opt_id但是需要这两列,那也没关系。 结果应该是这样的

ID (COLUMN1)        | OPT_ID(COLUMN 2)
000000001082157827  | 7

还有一些情况,OPT_ID有两个相同的id。我应该得到相同的总数(7不是9)

3 个答案:

答案 0 :(得分:1)

对于当前数据集,以下查询应该为您提供结果

SELECT T1.ID , COUNT(*) 
FROM TABLE1 T1 JOIN TABLE2 T2
ON T1.TRACK_ID = T2.TRACK_ID 
GROUP BY T1.ID

在给定的示例中,您没有table2,我不确定table2如何影响结果集。如果您对任何特定列使用group by,则无需再次为该列提供distinct。两者都有相同的目的(考虑到性能时,Group by优于distinct。)

答案 1 :(得分:1)

尝试使用以下查询:

SELECT id ,(SELECT Sum(Count(*))
 FROM t12 GROUP BY opt_id HAVING Count(*)=1) AS count1
 FROM t12---change the table name
 GROUP BY id; 

答案 2 :(得分:0)

select t1.id,count(distinct t2.opt_id) 
from table1,tabel2 
where t1.track_id=t2.track_id 
group by t1.id

我认为这可以解决您的问题。