关于这一点:

Given a table that looks like this:

name
------
barry
dave
bill
dave
dave
barry
john
This query:

SELECT name, count(*) AS count FROM table GROUP BY name;
Will produce output like this:

name    count
-------------
barry   2
dave    3
bill    1
john    1

对于ActiveModel来说,正确的Rails惯例是什么?

推荐答案

DistinctGroup By会给出不同的结果.为了得到你期望的结果,你需要使用

Person.group(:name).count
(1.2ms)  SELECT COUNT(*) AS count_all, name AS name FROM "people" GROUP BY "people"."name"
=> {"Dan"=>3, "Dave"=>2, "Vic"=>1} 

如上所示,该组将以散列形式返回内容.而distinct只返回总人数,如下所示.

Person.distinct(:name).count
(0.4ms)  SELECT DISTINCT COUNT(DISTINCT "people"."id") FROM "people"
=> 6 

Sql相关问答推荐

如何重用表值用户定义函数调用的结果?

有没有一种正确的方法来利用SQL UNION来从三个潜在查询中 Select 最大值?

如何在Snowflake SQL存储过程中传递LIMIT和OFFSET的参数?

SQL基于多个值 Select 单行

SQL SELECT MOST NEST TIMESTAMP BEAT ORDER

返回找到的最小和最大row_number()spark SQL

SQL数据库规范化与数据插入

如何简化此PostgreSQL查询以计算平均值?

在WHERE EXISTS子查询中,列返回是否重要?

使用与JOIN一起使用的查询后进行分页和排序

SQL:如果一个表中的日期在另一个表的日期的12个月内,则为是或否

使用多个WITH子查询的替代方法

插入具有预期逻辑的查询以Forking 表

显示所有组并计算给定组中的项目(包括 0 个结果)

POSTGRES to_timestamp() 假定 UTC 字符串为本地时间

SQL:考虑合并分支计算分支的增长百分比

SQL 多个不满足的条件失败

Postgres如何在一个日历周中前进和回填值

查询以查找今天和昨天的数据之间的差异以及伪列

根据开始/结束标记将 GROUP_ID 分配给行