【问题标题】:group by while selecting many more columns分组,同时选择更多列
【发布时间】:2013-09-03 21:34:39
【问题描述】:

我有这个问题:

select first_name, last_name, MAX(date)
from person p inner join
address a on 
a.person_id = p.id
group by first_name, last_name

与人(sid,姓氏,名字),地址(数据,cp,sid,城市)

我的问题是如何进行查询以选择名字、姓氏、MAX(日期)、城市、cp 不添加 city 和 cp 到组中

我的意思是我想要所有 5 列,但仅适用于按 first_name、last_name 和 date 分组的数据

非常感谢

【问题讨论】:

  • 你应该选择哪个城市和cp?。由于您是按其他列分组的,因此您可以将它们添加到 GROUP BY 或对它们执行聚合函数:select first_name, last_name, MAX(date), MAX(city), MAX(cp)
  • 或者,你需要一些方法来挑选你想要的;一个订单。

标签: sql oracle11g group-by grouping


【解决方案1】:

这是不可能的。假设您的数据库中有三个 John Smith,每个人都有一个或两个地址。当你现在按名字分组时,你想得到哪个城市?约翰史密斯所在的城市和他的地址是哪一个?由于这个问题没有隐含的答案,所以没有办法在不明确说明要选择哪个城市的情况下编写选择语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    相关资源
    最近更新 更多