0

我在 MS SQL Server 中有要求,按计数顺序获取关键字组,如果计数值相同,最新计数应该在顶部,

表 - 字段

id, keyword, datetime

询问

SELECT 
       keywords,count( * ) as count 
FROM 
       xyztable 
GROUP BY 
       keywords 
ORDER BY
       count( * )

在这里,如果计算相同的关键字,它应该按日期时间排序

谢谢,MK。

4

2 回答 2

1

将您的 ORDER BY 更改为:

ORDER BY count(*) DESC,datetime DESC

您可以按顺序排列多个列,它们按您放置它们的顺序排列。在这种情况下,您首先订购count(*),相同count(*)的订购者datetime

编辑:

重新阅读您的问题,我发现我并不完全准确。是的,您可以按多列排序,但在您的情况下,您有一个聚合函数 ( COUNT(*)),所以这会给您一个错误,除非您datetime输入group by也。

于 2013-10-01T17:31:46.470 回答
0

我认为这就是你要找的:

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 |
于 2013-10-01T17:48:08.817 回答