有了这个FruitBasket模型,
水果篮(模型)类:
水果= CharField(max_length = 128)
计数= PositiveIntegerField()
还有这个样本数据
id水果数 ----- ---------- ----- 0苹果10 1个香蕉20 2苹果5 3香蕉30
我想要一个Django查询,它返回以下项目:
[(2,苹果,5),(3,香蕉,30)]
本质上,获取每个水果的“最新”行(在此示例中,我将时间戳简化为rowid。)
我有一个类似于这个问题中描述的情况,我写了一个相同的查询,但是当我尝试将其写为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中正确编写查询?
我有一个表,每个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中不起作用
谢谢
示例数据库表:
示例所需输出(由hibernate查询生成):
在上面的示例中,第三条记录将从结果中排除,因为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/
假设我想要一个表格,它给我下面的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) 这是我的表结构:
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兼容.
我正在编写一个特别麻烦的查询.归结为:
我获得了一个结构表:
pid | tid | points
Run Code Online (Sandbox Code Playgroud)
经过一个非常大的查询.
为便于说明:
pid =问题IDtid =团队IDpoints =该团队因该问题而获得的分数.我想找到为特定pid获得最高分的球队.
我的问题是双重的:
如果这是一个名字的简单表格,teampoints我怎样才能得到tid每个pid的MAX(点数)?我试过SELECT pid, tid, MAX(points) from teampoints group by pid;但可以理解,那是行不通的
经过一次相当大的查询,我得到了这个结果.如果我的第一个答案涉及teampoints再次选择数据,有没有办法做到这一点,而无需再次计算整个表?
谢谢
PS:我用的是mysql.
我的系统中有几个表,它们的相关结构是:
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 …所以我得到了这个声明,这很好:
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函数确定,获取最新日期).
我该如何解决这个问题?
我有下表(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) 我有下表:
-----------------------------------------------------------
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)
有谁知道如何得到这个结果?