相关疑难解决方法(0)

Django:按不同列按最新过滤

有了这个FruitBasket模型,

水果篮(模型)类:
    水果= CharField(max_length = 128)
    计数= PositiveIntegerField()

还有这个样本数据

id水果数
----- ---------- -----
0苹果10
1个香蕉20
2苹果5
3香蕉30

我想要一个Django查询,它返回以下项目:

[(2,苹果,5),(3,香蕉,30)]

本质上,获取每个水果的“最新”行(在此示例中,我将时间戳简化为rowid。)

python sql django aggregate distinct

6
推荐指数
1
解决办法
4925
查看次数

命名查询以选择具有MAX(列名称)的行,使用另一列的DISTINCT

我有一个类似于这个问题中描述的情况,我写了一个相同的查询,但是当我尝试将其写为jpql命名查询时,我收到一个错误.

我的查询:

@NamedQuery(
            name = "findRankingsBetween",
            query = "SELECT rt FROM Rankingtable rt " +
                        "INNER JOIN " +
                            "(SELECT teamId, MAX(lastupdate) as MaxDateTime " +
                            "FROM Rankingtable " +
                            "GROUP BY teamId) grouped " +
                        "ON rt.teamId = grouped.teamId " +
                        "AND rt.lastupdate = grouped.MaxDateTime " +
                    "WHERE rt.lastupdate BETWEEN :from AND :to"
            )
Run Code Online (Sandbox Code Playgroud)

错误:

Error in named query: findRankingsBetween: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 79
Run Code Online (Sandbox Code Playgroud)

如何在jpql中正确编写查询?

java mysql hibernate jpa jpql

6
推荐指数
1
解决办法
7271
查看次数

在sql中选择具有最新日期的行,每个ID重复多次

我有一个表,每个ID重复3次.每行中每个id前面都有一个日期.
我想为最新日期的每个ID选择整行.此表中共有370列我希望在选择该行时选择所有列.

样品 -

ID   Name    Date        Marks    ..    ..  ..   
1     XY     4/3/2017     27
1     fv     4/3/2014     98
1     jk     4/3/2016     09
2     RF     4/12/2015    87
2     kk     4/3/2009     56
2     PP     4/3/2011     76
3     ee     4/3/2001     12
3     ppp    4/3/2003     09
3     lll    4/3/2011     23
Run Code Online (Sandbox Code Playgroud)

答案应该是

ID   Name    Date        Marks    ..    ..  ..   
1     XY     4/3/2017     27      
2     RF     4/12/2015    87
3     lll    4/3/2011     23  
Run Code Online (Sandbox Code Playgroud)

我正在尝试如下 -

select distinct ID,*,max(date) as maxdate from table
Run Code Online (Sandbox Code Playgroud)

我也是在Hive中尝试这个.所以不确定某些sql函数是否在Hive中不起作用

谢谢

mysql sql hive

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

Hibernate Criteria - 返回列不同的记录

示例数据库表:

  1. ID = 1,msgFrom ='你好',foobar ='meh'
  2. ID = 2,msgFrom ='再见',foobar ='评论'
  3. ID = 3,msgFrom ='Hello',foobar ='response'

示例所需输出(由hibernate查询生成):

  1. ID = 1,msgFrom ='你好',foobar ='meh'
  2. ID = 2,msgFrom ='再见',foobar ='评论'

在上面的示例中,第三条记录将从结果中排除,因为msgFrom列是相同的.假设Java/Hibernate类叫做Message.我希望结果作为Message对象列表(或者可以转换为Message的对象)返回.我想尽可能使用Criteria API.我在SO上看到了这个例子,看起来很相似,但我还没有正确实现它.

 select e from Message e 
    where e.msgFrom IN (select distinct m.msgFrom 
                          from Message m
                          WHERE m.msgTo = ? 
                          AND m.msgCheck = 0");
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是要对数据库上的不同记录进行过滤,所以我对我必须在应用程序服务器上过滤任何内容的答案不感兴趣.

编辑:文章基本上显示了我想要做的事情.http://oscarvalles.wordpress.com/2008/01/28/sql-distinct-on-one-column-only/

java hibernate criteria-api

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

访问查询以选择一列的MAX但在另一列上唯一的行

假设我想要一个表格,它给我下面的4列数据,但我只想为每个唯一的"ID"使用一行,使用"Date"列只选择每个唯一"ID"的最新日期:

|--ID--|-Type-|-Code-|--Date--|
|   1  |   A  |  11  |11/07/13|
|   2  |   A  |  11  |11/07/13|
|   2  |   B  |  12  |10/07/13|   <-- don't want this record from ID=2 as
|   3  |   A  |  11  |11/07/13|       there is a more recent date for it
|   4  |   A  |  10  |11/07/13|       than 10/07/2013
|   5  |   A  |  11  |11/07/13|
Run Code Online (Sandbox Code Playgroud)

我已经尝试调整这个似乎是类似问题的答案,但我收到以下错误:

您的查询不包含指定的表达式"ID"作为聚合函数的一部分

这是我试图在Access中运行的SQL的改编版本:

SELECT ESM.ID, ESM.Type, ESM.Code, ESM.Date
FROM Emp_Stat_Mon As ESM
INNER JOIN …
Run Code Online (Sandbox Code Playgroud)

ms-access

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

SQL:过滤具有最大值的行

这是我的表结构:

File    |   Version     |   Function
1       |   1           |   1
1       |   2           |   1
1       |   3           |   1
1       |   2           |   2

2       |   1           |   4
3       |   2           |   5
Run Code Online (Sandbox Code Playgroud)

我需要它只返回这些行

1       |   3           |   1
2       |   1           |   4
3       |   2           |   5
Run Code Online (Sandbox Code Playgroud)

含义我只想要每个文件具有最新版本的函数.

我不希望下面的结果,即不是最新版本的唯一函数ID

1       |   3           |   1
1       |   2           |   2
...
Run Code Online (Sandbox Code Playgroud)

我看过如何用SQL中的另一列选择MAX(列值),DISTINCT的行?,但它返回最新的唯一函数ID.

查询需要与sqlite3兼容.

sql sqlite greatest-n-per-group

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

在SQL查询中出现MAX()和`group by`的问题

我正在编写一个特别麻烦的查询.归结为:

我获得了一个结构表:

pid | tid | points
Run Code Online (Sandbox Code Playgroud)

经过一个非常大的查询.

为便于说明:

  • pid =问题ID
  • tid =团队ID
  • points =该团队因该问题而获得的分数.

我想找到为特定pid获得最高分的球队.

我的问题是双重的:

  1. 如果这是一个名字的简单表格,teampoints我怎样才能得到tid每个pid的MAX(点数)?我试过SELECT pid, tid, MAX(points) from teampoints group by pid;但可以理解,那是行不通的

  2. 经过一次相当大的查询,我得到了这个结果.如果我的第一个答案涉及teampoints再次选择数据,有没有办法做到这一点,而无需再次计算整个表?

谢谢

PS:我用的是mysql.


GORY DETAILS:小心谨慎

我的系统中有几个表,它们的相关结构是:

users: uid
teams: tid | eid | teamname
teammembers: tid | uid
events: eid
problems: pid | eid
submissions: subid | pid | uid | eid | points | subts
Run Code Online (Sandbox Code Playgroud)

一些注意事项: - 问题属于事件 - 用户属于团队 - 提交属于问题(pid)和用户(uid).提交表有一个冗余的eid字段,它总是可以从pid中确定.

用例是:

  • 用户组成团队.用户由uid …

mysql

4
推荐指数
1
解决办法
753
查看次数

按SQL语句分组

所以我得到了这个声明,这很好:

SELECT   MAX(patient_history_date_bio) AS med_date, medication_name
FROM     biological
WHERE    patient_id = 12)
GROUP BY medication_name
Run Code Online (Sandbox Code Playgroud)

但是,我想也有相应的药物_dose.所以我输入了这个

SELECT   MAX(patient_history_date_bio) AS med_date, medication_name, medication_dose
FROM     biological
WHERE    (patient_id = 12)
GROUP BY medication_name
Run Code Online (Sandbox Code Playgroud)

但是,它给我一个错误说:

"coumn'biimal.medication_dose'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中."

所以我尝试将GMB_dose添加到GROUP BY子句中,但是它给了我额外的行,我不想要.我想在我的桌子上获得每种药物的最新行.(最新行由max函数确定,获取最新日期).

我该如何解决这个问题?

sql t-sql sql-server group-by

4
推荐指数
1
解决办法
658
查看次数

如何选择此表中每个不同用户的最高分数?

我有下表(scores):

id  user  date         score  
---|-----|------------|--------
1  | 10  | 11/01/2016 | 400   
2  | 10  | 11/03/2016 | 450 
5  | 17  | 10/03/2016 | 305  
3  | 13  | 09/03/2016 | 120   
4  | 17  | 11/03/2016 | 300 
6  | 13  | 08/03/2016 | 120  
7  | 13  | 11/12/2016 | 120  
8  | 13  | 09/01/2016 | 110
Run Code Online (Sandbox Code Playgroud)

我想max(score)为每个不同的用户进行选择,用作date决胜局(在平局的情况下,应返回最近的记录),以便结果如下所示(每个用户的最高分,按score降序排序命令):

id  user  date         score  
---|-----|------------|--------
2  | 10  | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql greatest-n-per-group

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

获取每个 Group By SQL 的最新记录

我有下表:

-----------------------------------------------------------
ID     oDate         oName     oItem    oQty    oRemarks
-----------------------------------------------------------
1      2016-01-01    A         001      2       
2      2016-01-01    A         002      1       test
3      2016-01-01    B         001      3  
4      2016-01-02    B         001      2
5      2016-01-02    C         001      2
6      2016-01-03    B         002      1
7      2016-01-03    B         001      4
       ff.
Run Code Online (Sandbox Code Playgroud)

我想获得每个名字的最新记录。所以结果应该是这样的:

-----------------------------------------------------------
oDate         oName     oItem    oQty    oRemarks
-----------------------------------------------------------
2016-01-01    A         001      2       
2016-01-01    A         002      1       test
2016-01-02    C         001      2
2016-01-03    B         002      1
2016-01-03    B         001      4
ff.
Run Code Online (Sandbox Code Playgroud)

有谁知道如何得到这个结果?

sql sql-server select sql-server-2008-r2 groupwise-maximum

3
推荐指数
1
解决办法
8015
查看次数