【问题标题】:sql max of count 2 tablessql 最多计数 2 个表
【发布时间】:2013-11-20 23:37:00
【问题描述】:

我一直在搜索几个小时(下午 1 点到晚上 11 点)来寻找我必须编写的这个 SQL 查询的解决方案。基本上,我有 2 个表,我必须从一个表中选择在另一个表中具有最大结果的 ID。第二个问题是有 2 个 ID。我无法完全解释我的意思,因为我不确定,但我可以发布我的说明和表格链接。

任何帮助将不胜感激。我还查看了 SO 和其他地方的一百万个其他帖子,但即使它看起来很相关,我也不知道要进行哪些更改以满足我的需求。

SQL SELECT MAX COUNT

所以我的任务如下:-

Display the name and the telephone number of private owners which have more properties than anybody else.

图像中的顶部表格显示“出租物业”表格,下部显示“私人业主”。

关于这个问题,我需要使用私有所有者表的主键来计算每个私有所有者可以租用的房产数量,然后显示拥有该私有所有者的详细信息大多数可用房产 - 通过研究数据,有 2 个私人所有者(CO87 和 CO93)。

再次,我非常感谢任何帮助,我在 12 小时内一直在拔头发:/

提前谢谢各位,

提姆。

P.s - 只是为了好奇,这是大学作业的大量 SQL 任务之一 =)

编辑:- 所有者 ID 是字符串,而不是整数。

【问题讨论】:

  • 另外,如果有人足够优秀来提供解决方案 - 要求通用版本会不会太过分了?以防万一其他人遇到这个乏味的问题? :)
  • 我现在要去睡觉了,但是看看dense_rank()函数...
  • 你有没有尝试过?而不是在这里发布您的作业并要求我们做?
  • 当然我尝试了一些东西,我不希望你做我的功课我要求指导,而不是一个明确的解决方案。当你醒来后一直盯着 pgAdmin 的查询编辑器看时,你并没有把所有的尝试都放在手边。我会在早上发布我的尝试,暂时我需要睡觉。

标签: sql postgresql


【解决方案1】:

你的流程应该是:

  1. 获取每位业主的房产数量
  2. 查找拥有最大属性数的所有者 ID
  3. 查找具有这些所有者 ID 的所有者。

似乎这样应该可以:

SELECT * FROM Owners
WHERE OwnerID IN 
  (
   SELECT OwnerID 
   FROM Properties
   GROUP BY OwnerID
   HAVING COUNT(*) = 
      (SELECT COUNT(*)
       FROM Properties
       GROUP BY OwnerID
       ORDER BY COUNT(*) DESC
       LIMIT 1)
  )

【讨论】:

  • OP 的文字就足够了,因为他试图让我们做作业。
  • 查看我的编辑 - 不确定 HAVING 子句中的子查询是否可以在 postgresql 中工作,但从逻辑上讲,这就是它的工作方式。
  • 所以,根据我的理解,我应该向后阅读查询?顺便说一句,这与一个编辑点完美配合,不得不用 LIMIT 替换 TOP,但这是我需要的解决方案。现在试着把我的头绕在它周围,以完成下一个任务,哈哈。非常感谢!
  • 为 postgreSQL 更新
  • @Timmy 是的,您可以从内到外阅读它 - 按所有者选择前 # 个属性,找到拥有该属性的所有所有者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 2014-06-24
相关资源
最近更新 更多