标签: distinct

按字段获取Queryset的不同值

我有这个型号:

class Visit(models.Model):
    timestamp  = models.DateTimeField(editable=False)
    ip_address = models.IPAddressField(editable=False)
Run Code Online (Sandbox Code Playgroud)

如果用户在一天内多次访问,如何根据ip字段筛选唯一行?(我想今天的独特访问)

today = datetime.datetime.today()
yesterday = datetime.datetime.today() - datetime.timedelta(days=1)

visits = Visit.objects.filter(timestamp__range=(yesterday, today)) #.something?
Run Code Online (Sandbox Code Playgroud)

编辑:

我看到我可以使用:

Visit.objects.filter(timestamp__range=(yesterday, today)).values('ip_address')
Run Code Online (Sandbox Code Playgroud)

获取只有ip字段的ValuesQuerySet.现在我的QuerySet看起来像这样:

[{'ip_address': u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}, {'ip_address':
 u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}, {'ip_address': u'127.0.0.1'}]
Run Code Online (Sandbox Code Playgroud)

如何在不评估QuerySet和获取数据库命中的情况下过滤此唯一性?

# Hope it's something like this...
values.distinct().count()
Run Code Online (Sandbox Code Playgroud)

django field distinct django-queryset

48
推荐指数
3
解决办法
6万
查看次数

使用JPA和Hibernate时,DISTINCT如何工作

DISTINCT在JPA中使用哪一列,是否可以更改它?

这是使用DISTINCT的示例JPA查询:

select DISTINCT c from Customer c
Run Code Online (Sandbox Code Playgroud)

这没有多大意义 - 什么专栏是基于什么?它是否在实体上指定为注释,因为我找不到?

我想指定列来区分,例如:

select DISTINCT(c.name) c from Customer c
Run Code Online (Sandbox Code Playgroud)

我正在使用MySQL和Hibernate.

java jpa distinct

46
推荐指数
6
解决办法
14万
查看次数

使用LINQ的Distinct()的相等比较器的委托

我有一个LINQ Distinct()语句,它使用我自己的自定义比较器,如下所示:

class MyComparer<T> : IEqualityComparer<T> where T : MyType
{
    public bool Equals(T x, T y)
    {
        return x.Id.Equals(y.Id);
    }

    public int GetHashCode(T obj)
    {
        return obj.Id.GetHashCode();
    }
}

...

var distincts = bundle.GetAllThings.Distinct(new MyComparer<MySubType>());
Run Code Online (Sandbox Code Playgroud)

这一切都很好,花花公子,按我的意愿工作.出于好奇,我是否需要定义自己的Comparer,还是可以用委托替换它?我以为我应该可以这样做:

var distincts = bundle.GetAllThings.Distinct((a,b) => a.Id == b.Id);
Run Code Online (Sandbox Code Playgroud)

但这不编译.有一个巧妙的伎俩吗?

c# linq distinct

46
推荐指数
3
解决办法
3万
查看次数

我怎么能在sqlite中做一个明显的计数?

我有一张桌子:

ref,type
1,red
2,red
3,green
4,blue
5,black
6,black
Run Code Online (Sandbox Code Playgroud)

我希望sqlite查询的结果是:

red,2
green,1
blue,1
black,2
Run Code Online (Sandbox Code Playgroud)

我认为最难的事情是找到一个与我的问题相符的问题?那么我相信答案即将来临......

:)

sqlite sum count distinct

46
推荐指数
2
解决办法
4万
查看次数

在Xpath中有所区别?

我有这个XML文件,我想从中计算它中引用的用户数.但它们可以出现在多个类别中,我希望这些重复项不被考虑在内.
在下面的示例中,查询应该返回3而不是4.在XPath中是否有办法这样做?用户根本没有排序.

<list>
  <group name='QA'>
    <user name='name1'>name1@email</user>
    <user name='name2'>name2@email</user>
  </group>
  <group name='DEV'>
    <user name='name3'>name3@email</user>
    <user name='name2'>name2@email</user>
  </group>
</list>
Run Code Online (Sandbox Code Playgroud)

xml xpath distinct

45
推荐指数
2
解决办法
5万
查看次数

获取最后一组不同的记录

我有一个包含以下列的数据库表:

id   code   value   datetime   timestamp
Run Code Online (Sandbox Code Playgroud)

在此表中,唯一的唯一值位于id即主键中.

我想根据日期时间值检索此表中最后一组不同的记录.例如,让我们说下面是我的表

id   code   value   datetime               timestamp
1    1023   23.56   2011-04-05 14:54:52    1234223421
2    1024   23.56   2011-04-05 14:55:52    1234223423
3    1025   23.56   2011-04-05 14:56:52    1234223424
4    1023   23.56   2011-04-05 14:57:52    1234223425
5    1025   23.56   2011-04-05 14:58:52    1234223426
6    1025   23.56   2011-04-05 14:59:52    1234223427
7    1024   23.56   2011-04-05 15:00:12    1234223428
8    1026   23.56   2011-04-05 15:01:14    1234223429
9    1025   23.56   2011-04-05 15:02:22    1234223430
Run Code Online (Sandbox Code Playgroud)

我想检索ID为4,7,8和9的记录,即具有不同代码的最后一组记录(基于日期时间值).我所强调的只是我想要实现的一个例子,因为这个表最终将包含数百万条记录和数百个单独的代码值.

我可以用什么SQL语句来实现这个目的?我似乎无法使用单个SQL语句完成它.我的数据库是MySQL 5.

mysql distinct

45
推荐指数
3
解决办法
3万
查看次数

PG ::错误:SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中

ActionView :: Template :: Error(PG ::错误:错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中

我正在创建一个事件网站,我正在尝试按事件的开始时间对呈现的rsvps进行排序.有很多RSVPS,所以我将它们分组,但我在过去的几天里在排序结果时遇到了很多困难而没有在PG上弹出这个错误.我已经看了一些关于这个主题的先前问题,但我仍然很丢失.我怎样才能让它发挥作用?非常感谢!

@rsvps = Rsvp.where(:voter_id => current_user.following.collect {|f| f["id"]}, :status => 'going').where("start_time > ? AND start_time < ?", Time.now, Time.now + 1.month).order("count_all desc").count(:group => :event_id).collect { |f| f[0] }

<%= render :partial => 'rsvps/rsvp', :collection => Rsvp.where(:event_id => @rsvps).select("DISTINCT(event_id)").order('start_time asc') %>
Run Code Online (Sandbox Code Playgroud)

ruby postgresql ruby-on-rails distinct ruby-on-rails-3

45
推荐指数
3
解决办法
5万
查看次数

如何实现IEqualityComparer返回不同的值?

我有一个L2E查询返回一些包含重复对象的数据.我需要删除那些重复的对象.基本上我应该假设如果他们的ID是相同的,那么对象是重复的.我试过了q.Distinct(),但仍然返回了重复的对象.然后我尝试实现自己的IEqualityComparer并将其传递给Distinct()方法.该方法失败,并带有以下文字:

LINQ to Entities无法识别方法'System.Linq.IQueryable 1[DAL.MyDOClass] Distinct[MyDOClass](System.Linq.IQueryable1 [DAL.MyDOClass],System.Collections.Generic.IEqualityComparer`1 [DAL.MyDOClass])'方法,并且此方法无法转换为商店表达式.

这是EqualityComparer的实现:

  internal class MyDOClassComparer: EqualityComparer<MyDOClass>
    {
        public override bool Equals(MyDOClass x, MyDOClass y)
        {
            return x.Id == y.Id;
        }

        public override int GetHashCode(MyDOClass obj)
        {
            return obj == null ? 0 : obj.Id;
        }
    }
Run Code Online (Sandbox Code Playgroud)

那我该怎么写自己的IEqualityComparer呢?

c# entity-framework distinct iequalitycomparer

44
推荐指数
4
解决办法
6万
查看次数

高效的计数与Apache Spark不同

1亿个客户在几个网站的页面上点击1000亿次(比方说100个网站).点击流可在大型数据集中使用.

使用Apache Spark的抽象,每个网站计算不同访问者的最有效方法是什么?

distinct apache-spark

42
推荐指数
5
解决办法
7万
查看次数

Criteria.DISTINCT_ROOT_ENTITY与Projections.distinct

我对Hibernate很新.我发现我们可以使用以下两种不同的方式获得不同的结果.谁能告诉我他们之间有什么区别?何时使用其他?

Projections.distinct(Projections.property("id"));
Run Code Online (Sandbox Code Playgroud)

VS

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
Run Code Online (Sandbox Code Playgroud)

nhibernate hibernate distinct hibernate-criteria

40
推荐指数
1
解决办法
5万
查看次数