【问题标题】:MS access Group byMS 访问分组方式
【发布时间】:2020-03-20 19:56:32
【问题描述】:

我有一个很大的访问数据库表,下面给出了其中的一部分,我想按组获取最小值,即 3、5、9、...的最小值。我在查询中尝试过使用 Group by 的最小值,但它不能给我:

我想要喜欢:

Point     ParaA                  Modvalue             MinofParaA
    3        0.02345610000       1.1304602327522
    5       0.541734307717087   0.592591581187
    7       4.4094560894325      0.393245327246
    9       5.5450476528689        1.034165859885
    11           …..                 …….
    13          …….                …….  

我的部分数据库是:

Point   ParaA                 Modvalue
    3   1.01537282042687E-07    1.1304602327522
    3   5.41734307717087E-06    1.592591581187
    3   4.4094560894325E-05     2.393245327246
    3   5.5450476528689E-05      1.034165859885
    3   5.6210847721211E-05     1.9269298608176
    3   7.33007048018759E-05    3.17251848741499
    3   1.26935918181651E-04    7.577150615919
    3   1.27908837646644E-04    4.466340029852
    9   0.205576008517929       32.1580666011739
    9   0.2058403012141        6.080246238675
    9   0.205888794863275   4.48451872092713
    9   0.205970780609684   30.2695831828562
    9   0.206476048361761   2.3287221969481
    9   0.206500794273712   4.48657381393526
    9   0.206507173199086   3.54388543810806
    9   0.206701769548586   77.5713240109687
    5   0.127510144904596   0.692657575677875
    5   0.127593565284236   16.812067790848
    5   0.127765437607527   1.5228257707606
    5   0.12803789311445    13.185719005611
    5   0.12821555669427    15.488318488284
    5   0.128929582513692   1.24166466944275
    5   0.129137495154857   20.811097854043
    5   0.129492706221109   1.73300570963531
    5   0.130290993399936   6.7783307471853
    5   0.130328615583637   11.879218642047

我试过这样:分组依据和最小值(最小值),但它没有给我想要的。

【问题讨论】:

  • ParaAMinofPara有什么区别?
  • 我想要paraA的第3、5、..(一个值)的最小值,不用担心值。我只想要每个点的最小价值(一个值)。@Time Biegeleisen。 MinofPara 是在我试图在 access 中获取 paraA 的最小值后获得的,但它给了我如上所示的结果。
  • 我建议您修复您的示例数据,使其保持一致。我看到预期输出中的值甚至没有出现在给定的示例输入中。
  • 而不是给我每个点的单个最小值,它让我在不分组的情况下给出整个值,我不知道方法,无论样本数据如何,我认为它应该归结为一个最小值,我不知道哪里出错了!
  • 请发布实际的 SQL 查询,以便我们帮助您计算分组最小值。

标签: sql ms-access group-by


【解决方案1】:

根据 cmets 中提供的信息,可能会产生您需要的结果:

select t.point, first(t.paraA), min(t.minofpara)
from YourTable t
group by t.point

此查询的第二列实质上返回每个点组内“随机”记录的值。将YourTable 更改为您的表名。

编辑:根据您对我的回答的 cmets,您似乎只需要:

select t.point, min(t.paraa)
from YourTable t
group by t.point

要选择保持此最小值的记录,您可以使用:

select t1.* from YourTable t1 inner join
(
    select t2.point, min(t2.paraa) as mp
    from YourTable t2
    group by t2.point
) t3 
on t1.point = t3.point and t1.paraa = t3.mp

【讨论】:

  • 谢谢@Lee Mac,但我只想要按点分组的 ParaA 的最小值,我不会考虑 MinofPara,因为 minofpara 是我访问时得到的结果。只考虑点和ParaA,这样我就会得到按点分组的ParaA的最小值,即每个点的单个最小值(3,5 ...)
  • 谢谢,你如何选择任何一个变量(我有一个变量)对应这个最小值。我想要那个变量,即我不想要这个变量的任何最小值或最大值,但我想选择与 ParaA 的最小值相对应的变量值。
  • 再次感谢@Lee Mac 我认为最后更新的答案包含了所有内容,你能描述一下 t1、t2 和 t3 的含义,这样我就不会出错了吗?我从上一个答案中理解了 t.point,但 t1 与 t.point 不同吗?
  • 不客气。 t1,t2, & t3 仅仅是别名:(1) 省去我重复输入YourTable 的麻烦,(2) 允许我在同一个查询中多次引用YourTable(如@987654330 @ 和 t2)。
  • 我收到一条错误消息(不支持 JOIN 表达式)。我编辑了这个问题,我希望通过 poing 与 modvalue 的相应值分组的 paraA 的最小值。考虑到这些变量@Lee Mac,我需要你最后的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多