相关疑难解决方法(0)

SQL 选择组的最大值

初始表是这样的:

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)

mysql sql group-by phpmyadmin max

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

选择具有按两列分组的最大值的行

我已经看到了很多关于这类问题的解决方案(特别是这一个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)

mysql sql greatest-n-per-group

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

在having子句中使用MIN函数

我想得到最低工资的员工的姓名.有没有办法只使用一个查询?我在下面给出了我的查询,它不起作用,因为having子句需要一个条件.有没有办法在having子句中给出一个条件,用最低工资来检索员工姓名?

SELECT first_name,min(salary) as "sal"
FROM Employees
GROUP BY first_name 
having min(salary);
Run Code Online (Sandbox Code Playgroud)

sql oracle min having

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

SQLAlchemy:返回按列的最大值过滤的记录

总而言之,我遇到了一个(令人惊讶的微不足道的)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)

请注意,永远不会有多个记录具有最大值(如果相关).

当然有一种方法可以返回其中一列中具有最大值的记录.有任何想法吗?

python sqlalchemy

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

JPQL/SQL 获取按列分组的最新记录

我目前正在将 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)

java postgresql jpa jpql greatest-n-per-group

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

用 MAX 函数连接三个表

我有三个表:student,subjectscore
我想显示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)

mysql sql

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

选择每组的最后一条记录作为物化视图bq

是否可以选择每个组中版本最高的记录并将其存储为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

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

使用MAX,WHERE和GROUP BY在三个不同的列上提高SQL查询的速度

我试图加快一个查询,大约需要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)

mysql sql sqlperformance

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

DQL选择具有一列MAX值的每一行

使用 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)

php sql-server greatest-n-per-group symfony doctrine-orm

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

为什么使用 GROUP BY 的 SQL 查询会产生更多的行?

我有下表:

+------+-------+--------------------------------------+
| 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)

mysql sql greatest-n-per-group

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