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

SQL分组依据和排序依据

阴培
2023-03-14
问题内容

我有一张标签表,想从列表中获得计数最高的标签。

样本数据如下所示

id (1) tag ('night')
id (2) tag ('awesome')
id (3) tag ('night')

使用

SELECT COUNT(*), `Tag` from `images-tags`
GROUP BY `Tag`

让我得到正在寻找的完美数据。但是,我想对它进行组织,以使最高的标签数排在首位,并限制它仅向我发送前20个左右。

我试过了

SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY COUNT(id) DESC
LIMIT 20

而且我不断收到“组功能的无效使用-ErrNr 1111”

我究竟做错了什么?

我正在使用MySQL 4.1.25-Debian


问题答案:

在所有版本的MySQL中,只需在SELECT列表中为聚合设置别名,并按别名排序:

SELECT COUNT(id) AS theCount, `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY theCount DESC
LIMIT 20


 类似资料:
  • 问题内容: 我希望能够从电子邮件表中选择一堆行并按发件人分组。我的查询如下所示: 该查询几乎可以按我希望的方式工作-它选择按电子邮件分组的记录。问题在于主题和时间戳记与特定电子邮件地址的最新记录不符。 例如,它可能返回: 当数据库中的记录是: 如果“编程问题”主题是最新的,那么在对电子邮件进行分组时如何使MySQL选择该记录? 问题答案: 一个简单的解决方案是将查询包裹与ORDER语句子选择 第一

  • 此实例中的任务是获取数据库中每个作者的最新文章。 示例查询产生不可用的结果,因为它并不总是返回的最新消息。 目前公认的答案是 编辑:这个问题是另一个问题的延续,我的具体情况略有不同。您可以(也应该)假设还有一个wp_posts.id是该特定帖子的唯一标识符。

  • 问题内容: 感觉应该有一个基本的解决方案,但我似乎没有。 进行以下查询: 我想有效地做到这一点: 我并不是很想选择DatePublished,但是按它进行排序似乎很有意义。那是行不通的。 基本上,我想按最新的DatePublished文章对类别进行排序。 问题答案: 由于执行了,因此需要在非分组列上运行一些聚合函数。 将从每个类别中选择最后发表文章的日期,并相应地订购类别。

  • 我正在尝试使用Elasticsearch(2.4)聚合对使用该查询的多个索引按“productId”分组 1) 我想按分数排序,所以我尝试使用 哪个返回 2) 此外,我正在尝试使用分页,“size”键实际起作用,但“from”键不起作用 **更新-聚合结果示例** 希望有人能帮忙

  • 问题内容: 我正在对两个表进行联接。一个是用户表,另一个是高级用户列表。我需要让高级会员首先出现在我的查询中。但是,仅因为它们位于高级用户表中并不意味着它们仍然是高级成员- 还有一个IsActive字段也需要检查。 因此,基本上我需要按以下顺序返回结果: 活跃的高级用户 普通和不活跃的高级用户 现在我有以下内容: 问题在于,它会将非活跃高级会员置于非高级会员之上。 (我为此使用MS SQL Ser

  • 问题内容: 我在SQL Server2005中有一个SQL查询,当包含条件顺序时,该查询将中断。当我删除订单时,查询有效。当我按条件明确地写顺序(例如按p.Description的顺序)时,它就起作用了。当我添加条件顺序依据时,我得到了错误, SQL Server没有显示导致该错误的代码行。我想知道如何解决此问题,以便可以使用条件排序依据或对转换失败的列进行故障排除。 问题答案: 根据先前的答案,