我在 MS SQL Server 中有要求,按计数顺序获取关键字组,如果计数值相同,最新计数应该在顶部,
表 - 字段
id, keyword, datetime
询问
SELECT
keywords,count( * ) as count
FROM
xyztable
GROUP BY
keywords
ORDER BY
count( * )
在这里,如果计算相同的关键字,它应该按日期时间排序
谢谢,MK。
我在 MS SQL Server 中有要求,按计数顺序获取关键字组,如果计数值相同,最新计数应该在顶部,
表 - 字段
id, keyword, datetime
询问
SELECT
keywords,count( * ) as count
FROM
xyztable
GROUP BY
keywords
ORDER BY
count( * )
在这里,如果计算相同的关键字,它应该按日期时间排序
谢谢,MK。
将您的 ORDER BY 更改为:
ORDER BY count(*) DESC,datetime DESC
您可以按顺序排列多个列,它们按您放置它们的顺序排列。在这种情况下,您首先订购count(*),相同count(*)的订购者datetime。
编辑:
重新阅读您的问题,我发现我并不完全准确。是的,您可以按多列排序,但在您的情况下,您有一个聚合函数 ( COUNT(*)),所以这会给您一个错误,除非您datetime输入group by也。
我认为这就是你要找的:
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')
结果(小提琴演示):
| KEYWORDS | COUNTS | MAXDATE |
-----------|--------|------------|--
| z | 2 | 2013-09-06 |
| x | 2 | 2013-09-04 |
| y | 3 | 2013-09-03 |