我有一个排列如下的简单表,我想编写一个查询,该查询返回具有最多事务的单个client_id。该表中的任何一个客户端都比其他任何客户端具有更多的事务。
transaction_id int
client_id int
comments varchar
干杯。
答案 0 :(得分:0)
这是一种通过对行进行计数,在client_id上分组然后过滤以计数降序排列的前1个来获取数据的方法。
declare @table table (
transaction_id int,
client_id int,
comments varchar(20)
);
insert into @table (transaction_id, client_id, comments)
values
(1, 1, ''),
(2, 2, ''),
(3, 2, ''),
(4, 3, '')
select top 1 client_id, count(*) as vol
from @table
group by client_id
order by vol desc
答案 1 :(得分:0)
这将为您做到:
SELECT client_id FROM table_name GROUP BY client_id ORDER BY COUNT(*) DESC limit 1;
答案 2 :(得分:0)
select client_id, count(transaction_id)
from table
group by client_id
order by 2 desc
limit 1;
Group by
有助于基于特定列收集记录,而count
返回与该列值相对应的记录数。 Order by
降序排列,limit 1
限制为1条记录。