1

我有一个类似的表:

id  name   added     count  flag
---------------------------------
01  abcd1  09.02.13    4    false
02  abcd1  10.02.13    1    true  
03  abcd1  11.02.13    3    false
04  abcd1  12.02.13    4    false

我需要在以下条件下找到给定名称的计数总和:

  • 对于给定的名称
  • 标志应该是假的
  • 应在该名称的最后一个 flag=true 条目之后添加条目

在这种情况下,我想要条目 03 和 04 的计数总和。

我应该如何在 Django 中做到这一点?

编辑
我正在寻找创建这样的查询:

SELECT id from sample
WHERE 
  name = 'abcd1' AND
  added > (SELECT MAX(added) FROM sample WHERE name = 'abcd1' AND flag = TRUE)

编辑:另外,如果没有带有 flag=true 的条目,那么我需要该名称的所有条目。

4

2 回答 2

1

怎么样

select name, sum(count) as count
from T as t
where flag = 'false'
and exists (
    select 1
from T
where name = t.name
and flag = 'true'
group by name, flag
having max(added) < t.added
)
group by name
于 2013-03-31T00:17:37.803 回答
1

如果您使用一点子查询,这相当简单:

select
    name,
    sum(count)
from sample s
where flag = false
and (added > (select max(added)
    from sample
    where name = 'abcd1'
    and flag = true)
    OR
    not exists (
        select *
        from sample
        where name = 'abcd1'
        and flag = true)
    )
and name = 'abcd1'

OR not exists请注意,当没有带有 . 的条目时,使用该子句来处理这种情况flag=true

于 2013-03-31T00:36:22.117 回答