列出重复值的数量

时间:2015-07-06 21:30:50

标签: sql ruby-on-rails ruby postgresql ruby-on-rails-4

我有一个Rails ActiveRecord协会,其中一个课程有很多书,书籍属于一个课程。我想运行一个SQL命令,它会告诉我有多少课程有多本属于该课程的书籍。

Ex:第1课有第1册和第2册,我想知道发生了多少次。

3 个答案:

答案 0 :(得分:2)

#having会让您#group过滤掉只有一本图书的课程。

Book.group(:lesson_id).having("count(lesson_id) > 1").count

答案 1 :(得分:1)

Book.group(:lesson_id).count将返回一个哈希,其中lesson_id为关键字,书籍数量为值。

您还可以按照第4.1.2.3节

中的here实施counter_cache

答案 2 :(得分:0)

就像第一个答案所说的那样,计数器缓存或使用组和计数是获取计数的最佳方式。

但是如果您想要实际输出属于课程的书名而不是仅仅在控制台或视图中计数,您可以执行类似的操作:

Lesson.all.each do |lesson|
  puts lesson.books.map { |b| b.name }.join(", ")
end