我有一些如下所示的数据:
Acc_Id || Row_No
1 1
2 1
2 2
2 3
3 1
3 2
3 3
3 4
我需要一个查询来获得如下所示的结果:
Acc_Id || Row_No
1 1
2 3
3 4
请考虑我是SQL的初学者。
答案 0 :(得分:2)
我假设你想要行的计数
SELECT Acc_Id, COUNT(*)
FROM Table
GROUP BY Acc_Id
答案 1 :(得分:1)
试试这个:
select Acc_Id, MAX(Row_No)
from table
group by Acc_Id
答案 2 :(得分:0)
作为初学者,这是您第一次接触聚合和分组。您可能希望查看group by
上的documentation,因为此问题激发了您对解决方案的兴趣。通过查看具有您指定的公共列值的行进行分组,并将它们折叠为表示该组的单个行。在您的情况下,Acc_Id
中的值是您的群组的名称。
其他答案都是正确的,最后两列将与您的数据等效。
select Acc_Id, count(*), max(Row_No)
from T
group by Acc_Id;
如果你的编号有差距,那么它们就不一样了。您必须确定是否实际上在查找列中最大值的行数。此时,您还可以考虑将来对您有用的许多其他聚合函数。 (注意,在这种情况下,这里的实际值几乎没有意义。)
select Acc_Id, min(Row_No), sum(Row_No), avg(Row_No)
from T
group by Acc_Id;