Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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查询:需要按计数排序,大多数必须在顶部,其余紧随其后_Sql_Sql Server 2008_Tsql_Sql Order By - Fatal编程技术网

SQL查询:需要按计数排序,大多数必须在顶部,其余紧随其后

SQL查询:需要按计数排序,大多数必须在顶部,其余紧随其后,sql,sql-server-2008,tsql,sql-order-by,Sql,Sql Server 2008,Tsql,Sql Order By,表 预期成果: 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

预期成果:

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
那些拉链相同的应该在上面,然后其他的就在后面。 按Zip排序不起作用,因为它按Zip排序,而不是按发生次数排序


使用SQL Server 08来实现这一点,您应该针对一个子查询进行连接,该子查询返回每个zipcode的计数。联接子查询只需要提供计数(即使未显示),而主表
yourtable
提供所有其余列

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
SELECT 
  JobCode, Job1, Job2, Job3, order_jobs.zip
FROM
  jobs
  JOIN (SELECT zip, COUNT(*) AS zipcount FROM jobs GROUP BY zip) ordering 
ON jobs.zip = ordering.zip
ORDER BY zipcount DESC

SQL Server 2008在

SELECT 
  JobCode, 
  Job1,
  Job2,
  Job3,
  subq.zip
FROM
  yourtable
  JOIN (
     /* Subquery returns count per zip group */
     SELECT zip, COUNT(*) AS numzip 
     FROM yourtable 
     GROUP BY zip
  ) subq ON yourtable.zip = subq.zip
ORDER BY numzip DESC
如果不需要查看附加列,则可以将
COUNT()OVER
子句移动到ORDER BY子句中

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