我有一个问题,我试图以最方便的方式聚合结果。
假设我正在查询的表有6列与我相关,列a到f;d列和e列是时间,f列是alpha值,我认为它与本练习无关
我当前的查询是
select * from mytable where b in (list of values)
问题是最好出现多次
- a(primary key)
- 和c(来自不同表的主键
我想做的是按列b分组,但只返回每个b的最大值为c的行
我的查询是select b, max(c) from table where b in (range) group by b
每当我尝试添加其他列时,都会得到如下错误
'不是GROUP BY表达式'
但我只想按b分组
在这个表中,我想返回的是
| A(id)|B(分组依据)|C(id_other max)|
| --------------|--------------|--------------|
| 五|1|九|
| 10个|第二章|十二岁|
| 十五岁|三|六|
| 二十|四|10个|
沿着其他列d到f,但我不认为他们的价值观是相关的,如果他们是,请让我知道.我一直在通过大量的网站和书籍寻找指导关于最大和组由,但还没有能够弄清楚这一点.请让我知道,如果我需要提供一些额外的信息.谢谢!
我尝试了类似于select B,max(c),a,d,e,f from table where b in(range)group by b的方法,但不起作用
2条答案
按热度按时间zour9fqk1#
只要没有多个相同的c,就可以使用
或者如果您的数据库支持cte和窗口函数,并且您有多个相同的c
yhived7q2#
对于sql-server,我创建了这个sql-fiddle
创建一个简单的表
给它添加一些数据
上面的插入创建了这些记录
然后查询数据
这部分
SELECT B, Max(C_id) as C_Max FROM my_table GROUP BY B
获取C_id具有最高值且仅包括列B和C的所有记录。此结果可用于将结果与表本身连接以查找匹配行。