初始表是这样的:
Fruit | Item_ID | Production_line | Amount_produced | Production_date
---------------------------------------------------------------
Apples | 652 | 1 | 24 | 2016-05-12
Pears | 455 | 4 | 54 | 2016-05-16
Pears | 455 | 2 | 26 | 2016-05-13
Apples | 652 | 6 | 65 | 2016-05-14
Apples | 652 | 3 | 24 | 2016-05-21
Pears | 455 | 7 | 54 | 2016-05-17
Pears | 455 | 5 | 26 | 2016-05-15
Apples | 652 | 8 | …Run Code Online (Sandbox Code Playgroud) 我已经看到了很多关于这类问题的解决方案(特别是这一个SQL只选择列上具有最大值的行),但这些似乎都不合适:
我有以下表格布局,附件的版本控制,绑定到实体:
TABLE attachments
+------+--------------+----------+----------------+---------------+
| id | entitiy_id | group_id | version_number | filename |
+------+--------------+----------+----------------+---------------+
| 1 | 1 | 1 | 1 | file1-1.pdf |
| 2 | 1 | 1 | 2 | file1-2.pdf |
| 3 | 1 | 2 | 1 | file2-1.pdf |
| 4 | 2 | 1 | 1 | file1-1.pdf |
| 5 | 2 | 1 | 2 | file1-2.pdf |
| 6 | 2 | 3 …Run Code Online (Sandbox Code Playgroud) 我想得到最低工资的员工的姓名.有没有办法只使用一个查询?我在下面给出了我的查询,它不起作用,因为having子句需要一个条件.有没有办法在having子句中给出一个条件,用最低工资来检索员工姓名?
SELECT first_name,min(salary) as "sal"
FROM Employees
GROUP BY first_name
having min(salary);
Run Code Online (Sandbox Code Playgroud) 总而言之,我遇到了一个(令人惊讶的微不足道的)SQLA请求的问题; 目标是返回计数器列中具有最大值的记录:
这工作正常 - 返回正确的记录:
m=12 # arbitrary example of a max value of counter = 12
qry = session.query(Data).
filter(Data.user_id == user_id,Data.counter == m)
Run Code Online (Sandbox Code Playgroud)
下面的代码不起作用 - 返回None:
from sqlalchemy import func
qry = session.query(Data).
filter(Data.user_id == user_id,
Data.counter == func.max(Data.counter).select())
Run Code Online (Sandbox Code Playgroud)
请注意,永远不会有多个记录具有最大值(如果相关).
当然有一种方法可以返回其中一列中具有最大值的记录.有任何想法吗?
我目前正在将 JPQL(我认为是最新版本)与 postgresql 数据库一起使用,并且我正在尝试获取按某些(不是所有列)分组的最新对象。
假设我有一个像这样的 MyTable 表:
id | name | color | shape | date_of_creation | other_stuff|
---+------+-------+-------+------------------+------------+
01 | apple| red| circle| 30/12/2015| stuff|
02 | apple| red| circle| 15/12/2015| somestuff|
03 | apple| green| circle| 01/12/2015|anotherstuff|
04 | box| orange| cubic| 13/12/2015| blahblah1|
05 | box| orange| cubic| 25/12/2015| blahblah2|
Run Code Online (Sandbox Code Playgroud)
我只想要最新的按名称、颜色和形状分组,如下所示:
id | name | color | shape | date_of_creation | other_stuff|
---+------+-------+-------+------------------+------------+
01 | apple| red| circle| 30/12/2015| stuff|
05 | box| orange| cubic| 25/12/2015| blahblah2| …Run Code Online (Sandbox Code Playgroud) 我有三个表:student,subject和score。
我想显示max(subject_id)每个学生的详细信息。
学生桌
student_id student_name exam_date
1 Sharukh 24/06/12
2 Amir 23/06/12
Run Code Online (Sandbox Code Playgroud)
主题表
subject_id sub_name
200 Maths
300 English
400 Science
Run Code Online (Sandbox Code Playgroud)
评分表
student_id subject_id score
1 200 50
1 300 20
2 300 10
Run Code Online (Sandbox Code Playgroud)
结果应该是:
student_id student_name subject_id score
1 Sharukh 300 20
2 Amir 300 10
Run Code Online (Sandbox Code Playgroud) 是否可以选择每个组中版本最高的记录并将其存储为bigquery中的物化视图?
源表
version name value
1 a 100
1 b 200
1 c 300
2 c 400
Run Code Online (Sandbox Code Playgroud)
我只想获取每个组的最后一条记录(按版本分组),所以输出应该是这样的:
version name value
1 a 100
1 b 200
2 c 400
Run Code Online (Sandbox Code Playgroud)
尝试使用以下答案: https: //stackoverflow.com/a/1313293/5839247,得到一个错误:
Materialized views do not support analytic functions or WITH OFFSET.
尝试使用此答案中的方法:https: //stackoverflow.com/a/7745635/5839247,得到Unsupported operator in materialized view: Join.
文档:https ://cloud.google.com/bigquery/docs/materialized-views#supported_mvs
sql materialized-views google-bigquery google-cloud-platform
我试图加快一个查询,大约需要60秒才能完成约2000万行的表.
对于此示例,该表有三列(id,dateAdded,name).id是主键.我添加到表中的索引是:
(dateAdded)
(name)
(id, name)
(id, name, dateAdded)
Run Code Online (Sandbox Code Playgroud)
我试图运行的查询是:
SELECT MAX(id) as id, name
FROM exampletable
WHERE dateAdded <= '2014-01-20 12:00:00'
GROUP BY name
ORDER BY NULL;
Run Code Online (Sandbox Code Playgroud)
日期在查询之间是可变的.
这样做的目的是在添加日期或之前获取每个名称的最新条目.
当我在查询上使用explain时,它告诉我它正在使用(id,name,dateAdded)索引.
+----+-------------+------------------+-------+------------------+----------------------------------------------+---------+------+----------+-----------------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------------+-------+------------------+----------------------------------------------+---------+------+----------+-----------------------------------------------------------+
| 1 | SIMPLE | exampletable | index | date_added_index | id_element_name_date_added_index | 162 | NULL | 22016957 | Using where; Using index; Using temporary; Using …Run Code Online (Sandbox Code Playgroud) 使用 Symfony 2 和 Doctrine,我正在寻找一种方法来选择在特定列中具有最大值的每一行。
现在,我正在做两个查询:
我相信这可以通过一个查询来完成。
搜索,我在一个线程中找到了这个答案,这似乎是我正在搜索的内容,但是在 SQL 中。
因此,根据答案的第一个解决方案,我尝试构建的查询将是这样的:
select yt.id, yt.rev, yt.contents
from YourTable yt
inner join(
select id, max(rev) rev
from YourTable
group by id
) ss on yt.id = ss.id and yt.rev = ss.rev
Run Code Online (Sandbox Code Playgroud)
有人知道如何在 Doctrine DQL 中制作它吗?
现在,这是我的测试代码(不工作):
$qb2= $this->createQueryBuilder('ms')
->select('ms, MAX(m.periodeComptable) maxPeriode')
->where('ms.affaire = :affaire')
->setParameter('affaire', $affaire);
$qb = $this->createQueryBuilder('m')
->select('m')
//->where('m.periodeComptable = maxPeriode')
// This is what I thought was the most logical way of doing …Run Code Online (Sandbox Code Playgroud) 我有下表:
+------+-------+--------------------------------------+
| id | rev | content |
+------+-------+--------------------------------------+
| 1 | 1 | ... |
| 2 | 1 | ... |
| 1 | 2 | ... |
| 1 | 3 | ... |
+------+-------+--------------------------------------+
Run Code Online (Sandbox Code Playgroud)
当我运行以下查询时:
SELECT id, MAX(rev) maxrev, content
FROM YourTable
GROUP BY id;
Run Code Online (Sandbox Code Playgroud)
我得到:
+------+----------+--------------------------------------+
| id | maxrev | content |
+------+----------+--------------------------------------+
| 1 | 3 | ... |
| 2 | 1 | ... |
+------+----------+--------------------------------------+
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除 GROUP BY 子句如下:
SELECT …Run Code Online (Sandbox Code Playgroud) sql ×7
mysql ×5
doctrine-orm ×1
group-by ×1
having ×1
java ×1
jpa ×1
jpql ×1
max ×1
min ×1
oracle ×1
php ×1
phpmyadmin ×1
postgresql ×1
python ×1
sql-server ×1
sqlalchemy ×1
symfony ×1