当前位置: 首页 > 面试题库 >

SQL查询:需要按计数顺序,大多数必须在最上面,其余的紧随其后

党宇定
2023-03-14
问题内容

桌布

JobCode Job1 Job2 Job3 zip
------- ---- ---- ---- ----------
F       F    S    NULL 90030
F       F    S    NULL 90031
F       F    S    NULL 90031
F       F    S    NULL 90034
F       F         NULL 90034
F       F    S    NULL 90034
F       F    S    NULL 90034
F       F         NULL 90034
F       F    S    NULL 90035
F       F         NULL 90035-4640

预期成绩:

JobCode Job1 Job2 Job3 zip
------- ---- ---- ---- ----------
F       F    S    NULL 90034
F       F         NULL 90034
F       F    S    NULL 90034
F       F    S    NULL 90034
F       F         NULL 90034
F       F    S    NULL 90031
F       F    S    NULL 90031
F       F    S    NULL 90030
F       F    S    NULL 90035
F       F         NULL 90035-4640

那些具有相同Zip的用户应该在顶部,然后再进行其他操作。ORDER BY Zip不起作用,因为它按ZIP排序,而不是按出现次数排序

使用SQL Server 08


问题答案:

SQL Server 2008使用 COUNT() OVER

select *, c = count(1) over (partition by zip)
from tbl
order by c desc;

如果不需要查看其他列,则可以将该COUNT() OVER子句移到ORDER BY子句中。

select JobCode, Job1, Job2, Job3, zip
from tbl
order by count(1) over (partition by zip) desc;


 类似资料:
  • 问题内容: 如果我有这样的表和数据: 我希望按照从小到大的Group总数对它进行排序,例如:A-2个记录,B-1个记录,C-3个记录,因此它将变为: 我试过了 但这只会为我返回一个结果。 有什么提示吗?谢谢。 问题答案: 您需要首先聚合数据,这可以使用GROUP BY子句完成: 关键字DESC允许您首先显示最高计数,默认情况下按ORDER BY升序排列,这将首先显示最低计数。

  • 问题内容: 我有一张table,上面有所有学生的评分。我正在尝试获得范围内所有学生的人数,例如 0-9 =学生人数9 , 10 -19 =学生人数0 ,依此类推,最多100。 另外,如果有一些机构可以指出关于 案例陈述 的不错的教程,那将是非常好的 给出的答案很好。 但我的范围是固定的。如果没有申请人,我也必须显示0。 这是我的问题的主要区别。就像我也显示了类别。 问题答案: 您不需要声明。您可以

  • 问题内容: 有一个包含访问数据的表: 我想查找用户连续几天访问了我们的应用程序。因此,例如: 将返回: 有5条记录和两个间隔-3天(4月28日至30日)和2天(5月3日至4日)。 我的问题是如何找到用户连续访问该应用程序的最大天数(在示例中为3天)。试图在SQL文档中找到合适的函数,但没有成功。我想念什么吗? UPD: 谢谢您的回答!实际上,我正在使用vertica分析数据库(http://ver

  • 问题内容: 在SQL中按月将一列中的1-12连接到一堆计数的好方法是什么?…在​​SQL中 最终会像 编辑-基本上是一种获取我的月份列表/表格/任何内容的巧妙方法 问题答案: 许多方法…在上一份工作中对许多应用程序来说对我来说效果很好的一种方法是建立时间表。 然后,您可以将其日期字段放在startstamp和endstamp之间的timeframes表中进行联接。 这样可以很容易地拉出某个时间段或

  • 本文向大家介绍必须会的SQL语句(六) 数据查询,包括了必须会的SQL语句(六) 数据查询的使用技巧和注意事项,需要的朋友参考一下 1.基础的查询     1)重命名列     select name as '姓名' from 表名       2)定义常量列     select 是否 ='是' from 表名       3)top用法 percent      --这种写法可以获取前20%条

  • 问题内容: 假设我有一个查询“ select * from子句,其中id在(0,2,5,1,3)中”,我实际上希望返回的行以它们在where子句中指定的相同顺序返回。ID的顺序将随查询的不同而改变,并且该顺序没有模式。 我知道可以更改数据模型,创建临时表等。但是请相信我,这些类型的解决方案在我的情况下将行不通。我也无法在应用程序代码中更改结果对象的顺序。 我还知道,不同的数据库引擎对事物的排序方式