我有这个型号:
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) 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.
我有一个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)
但这不编译.有一个巧妙的伎俩吗?
我有一张桌子:
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)
我认为最难的事情是找到一个与我的问题相符的问题?那么我相信答案即将来临......
:)
我有这个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) 我有一个包含以下列的数据库表:
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.
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) 我有一个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呢?
1亿个客户在几个网站的页面上点击1000亿次(比方说100个网站).点击流可在大型数据集中使用.
使用Apache Spark的抽象,每个网站计算不同访问者的最有效方法是什么?
我对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)