Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql中使用count_Sql - Fatal编程技术网

在sql中使用count

在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有三

我需要一个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有三行,所有者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没有指定任何组内排序,但这应该很容易理解: