选择最大空值

时间:2016-04-03 20:39:38

标签: sql count null max

我需要选择拥有最多未被潜在买家查看的房产的业主。

选择'propertyforrent.ownerno'的最佳方式是'propertyno IS NULL'的数量最多。

此:

SELECT PropertyForRent.ownerno
FROM PropertyForRent propertyforrent, Client client, Viewing viewing
WHERE client.preftype=propertyforrent.type
AND client.clientno=viewing.clientno
AND viewing.propertyno IS NULL
ORDER BY count(*)
LIMIT 1

或者这个:

SELECT PropertyForRent.ownerno
FROM PropertyForRent propertyforrent, Client client, Viewing viewing
WHERE client.preftype=propertyforrent.type
AND client.clientno=viewing.clientno
AND MAX(COUNT(viewing.propertyno IS NULL)

谢谢!

1 个答案:

答案 0 :(得分:1)

我们在这里使用LEFT JOIN,以便返回租赁的所有属性 并且只有那些有相关观看的人。

SELECT PFR.ownerno, count(Distinct PFR.PropertyNo) Count_of_Unviewed_Properties
FROM PropertyForRent  PFR
LEFT JOIN viewing V
 on PFR.PropertyNo = V.PropertyNo
WHERE V.propertyno IS NULL
ORDER BY count(Distinct PFR.PropertyNo) Desc
LIMIT 1

然后我们得到一个不同的PFR.PropertyNo的计数,其中没有相关的查看,按此计数desc排序并限制为1个结果(除非有关系)将是拥有最多属性的所有者没有观看。

做出的假设:

  • 这里根本不需要客户......你对观看和财产感兴趣。
  • PropertyForRent具有PropertyNo
  • PropertyForRent.PropertyNo是该表上的PK。并确定给定所有者的唯一属性。
  • Viewing.propertyNo是Property toRent.PropertyNo的FK
  • 你并不关心"领带"