MS SQL Server(如何基于计数(*)和日期获取记录
我在MS SQL Server中有要求,按计数顺序获取关键字组,如果计数值相同,则最新计数应位于顶部 表-字段MS SQL Server(如何基于计数(*)和日期获取记录,sql,sql-server-2008,Sql,Sql Server 2008,我在MS SQL Server中有要求,按计数顺序获取关键字组,如果计数值相同,则最新计数应位于顶部 表-字段 id, keyword, datetime 质疑 在这里,若计算相同的关键字,它应该按日期时间排序 谢谢, 请将您的订单更改为: ORDER BY count(*) DESC,datetime DESC 您可以按顺序排列多个列,并按您放置它们的顺序排列。在这种情况下,您首先按count(*)排序,然后,具有相同count(*)的列按datetime排序 编辑: 重新阅读你的问题,我
id, keyword, datetime
质疑
在这里,若计算相同的关键字,它应该按日期时间排序
谢谢,
请将您的订单更改为:
ORDER BY count(*) DESC,datetime DESC
您可以按顺序排列多个列,并按您放置它们的顺序排列。在这种情况下,您首先按count(*)
排序,然后,具有相同count(*)
的列按datetime
排序
编辑:
重新阅读你的问题,我发现我的回答并不完全准确。是的,你可以按多列排序,但在你的例子中,你有一个聚合函数(
COUNT(*)
)在那里,这会给你一个错误,除非你把datetime
也放在组中。我想这就是你要找的:
SELECT keywords, count( * ) counts
FROM t
GROUP BY keywords
ORDER BY count( * ), max(date) desc
样本数据:
create table t(keywords varchar(50), date date)
insert into t values
('x','20130901'),('x','20130904'),
('y','20130901'),('y','20130902'),('y','20130903'),
('z','20130903'),('z','20130906')
结果():
您的问题/错误消息是什么?感谢您的快速回复,我在查询count(*)时也做了同样的操作desc,datetime desc,但它不基于日期,实际结果关键字计数datetime Google 20 01/09/2013 10:10 Gplus 2 01/09/2013 10:12 yahoo 2 01/09/2013 10:13在此情况下,Gplus和yahoo计数都是相同的,基于时间,它应该显示预期结果Google 20 01/09/2013 10:10 yahoo 2 01/09/2013 10:13 Gplus 2 01/09/2013 10:12我也尝试过同样的方法,当我对每页进行分页时,它会按最大值(日期)获取订单。此查询满足您的要求如果计数相同,最新值应位于顶部。按计数(*)排序后,您需要按最大值(日期)排序。我的简历类似于此实际结果关键字计数日期时间Google 20 01/09/2013 10:10 Gplus 2 01/09/2013 10:12 yahoo 2 01/09/2013 10:13在此情况下,Gplus和yahoo计数都是相同的,并且基于时间它应该显示预期结果Google 20 01/09/2013 10:10 yahoo 2 01/09/2013 10:13 Gplus 2 01/09/2013年10月12日这正是上面的查询所做的按计数(*)、最大(日期)说明排序
。
create table t(keywords varchar(50), date date)
insert into t values
('x','20130901'),('x','20130904'),
('y','20130901'),('y','20130902'),('y','20130903'),
('z','20130903'),('z','20130906')
| KEYWORDS | COUNTS | MAXDATE |
-----------|--------|------------|--
| z | 2 | 2013-09-06 |
| x | 2 | 2013-09-04 |
| y | 3 | 2013-09-03 |