在sql中使用count
我需要一个SQL语句,要求是:有一个表,它有两列:ID,Owner\u ID;我插入了几条记录,例如:在sql中使用count,sql,Sql,我需要一个SQL语句,要求是:有一个表,它有两列:ID,Owner\u ID;我插入了几条记录,例如: ID Owner_ID 0 0 1 0 2 1 3 1 4 2 5 3 6 3 7 3 8 3 9 0 现在我需要一个SQL语句,它返回一个ID列表,该列表按不同用户拥有的行数从大到小排序。在本例中,所有者3有四行;所有者0有三
ID Owner_ID
0 0
1 0
2 1
3 1
4 2
5 3
6 3
7 3
8 3
9 0
现在我需要一个SQL语句,它返回一个ID列表,该列表按不同用户拥有的行数从大到小排序。在本例中,所有者3有四行;所有者0有三行,所有者1有两行;所有者2有一行。结果应该是
ID Owner_ID
5 3
6 3
7 3
8 3
0 0
1 0
9 0
2 1
3 1
4 2
我想我应该使用聚合函数count,有人知道吗
我正在使用HSQLDB
提前谢谢 这是非常直截了当的
SELECT
ID,
Owner_ID
FROM
TheTable t
ORDER BY
(SELECT COUNT(*) FROM TheTable i WHERE i.Owner_ID = t.Owner_ID) DESC
这是非常直截了当的
SELECT
ID,
Owner_ID
FROM
TheTable t
ORDER BY
(SELECT COUNT(*) FROM TheTable i WHERE i.Owner_ID = t.Owner_ID) DESC
是的,你有大概的想法。请尝试以下查询:
select t.ID, t.Owner_ID
from table t
inner join (select Owner_ID, count(*) c from table t group by Owner_ID) tc
on t.Owner_ID = tc.Owner_ID
order by
tc.c desc, t.ID asc
是的,你有大概的想法。请尝试以下查询:
select t.ID, t.Owner_ID
from table t
inner join (select Owner_ID, count(*) c from table t group by Owner_ID) tc
on t.Owner_ID = tc.Owner_ID
order by
tc.c desc, t.ID asc
这将适用于大多数SQL DBMS,但会显示计数值
SELECT ID, Owner_ID, Owner_Count
FROM AnonymousTable AS A
JOIN (SELECT Owner_ID, COUNT(*) AS Owner_Count
FROM AnonymousTable
GROUP BY Owner_ID
) AS B ON B.Owner_ID = A.Owner_ID
ORDER BY Owner_Count DESC, Owner_ID ASC, ID ASC;
这将适用于部分但不一定全部DBMS;它按结果列表中未显示的列排序:
SELECT ID, Owner_ID
FROM AnonymousTable AS A
JOIN (SELECT Owner_ID, COUNT(*) AS Owner_Count
FROM AnonymousTable
GROUP BY Owner_ID
) AS B ON B.Owner_ID = A.Owner_ID
ORDER BY Owner_Count DESC, Owner_ID ASC, ID ASC;
这将适用于大多数SQL DBMS,但会显示计数值
SELECT ID, Owner_ID, Owner_Count
FROM AnonymousTable AS A
JOIN (SELECT Owner_ID, COUNT(*) AS Owner_Count
FROM AnonymousTable
GROUP BY Owner_ID
) AS B ON B.Owner_ID = A.Owner_ID
ORDER BY Owner_Count DESC, Owner_ID ASC, ID ASC;
这将适用于部分但不一定全部DBMS;它按结果列表中未显示的列排序:
SELECT ID, Owner_ID
FROM AnonymousTable AS A
JOIN (SELECT Owner_ID, COUNT(*) AS Owner_Count
FROM AnonymousTable
GROUP BY Owner_ID
) AS B ON B.Owner_ID = A.Owner_ID
ORDER BY Owner_Count DESC, Owner_ID ASC, ID ASC;
哪个数据库管理系统?如图所示,在纯SQL中生成结果需要一个DBMS,该DBMS允许您按选择列表中不存在的计算列排序,这不是标准的SQL功能。哪个DBMS?如图所示,在纯SQL中生成结果需要一个DBMS,该DBMS允许您按选择列表中不存在的计算列排序,这不是标准的SQL功能。或者,也可以按表i中的选择计数*排序,其中i.Owner\u ID=t.Owner\u ID DESC,Owner\u ID,ID?@Andy:如果您愿意的话。OP没有指定任何组内排序,但这应该很容易理解:或者从表i中选择COUNT*,其中i.Owner\u ID=t.Owner\u ID DESC,Owner\u ID,ID?@Andy:如果你愿意的话。OP没有指定任何组内排序,但这应该很容易理解: