SQL,最常出现的值
我有两个典型的表,一对多关系的客户和联系人 例如,我的表是这样填充的:SQL,最常出现的值,sql,frequency,Sql,Frequency,我有两个典型的表,一对多关系的客户和联系人 例如,我的表是这样填充的: Customer ------------- CustomerId 1 Contact --------------- ContactId CustomerId FName LName Address CreatedAt 1 1 John Smith Add1 25/01/2013
Customer
-------------
CustomerId
1
Contact
---------------
ContactId CustomerId FName LName Address CreatedAt
1 1 John Smith Add1 25/01/2013
2 1 John Cole Add1 26/01/2013
3 1 Alex Cole Add1 27/01/2013
4 1 John Smith Add2 28/01/2013
5 1 Alex Add2 29/01/2013
CustomerId FName LName Address
1 John Smith Add1
我想在这5行中创建一个新行,条件如下:
对于每个字段(列),选择出现频率最高且不为null或空的字段
如果非出现次数多于其他记录,则应使用不为null或空的最新记录
因此,对于上述示例,行应如下所示:
Customer
-------------
CustomerId
1
Contact
---------------
ContactId CustomerId FName LName Address CreatedAt
1 1 John Smith Add1 25/01/2013
2 1 John Cole Add1 26/01/2013
3 1 Alex Cole Add1 27/01/2013
4 1 John Smith Add2 28/01/2013
5 1 Alex Add2 29/01/2013
CustomerId FName LName Address
1 John Smith Add1
谢谢您没有指定哪些RDBMS,但我想这应该可以:
SELECT CustomerId, FName, LName, Address FROM Contact WHERE CustomerId = 1 GROUP BY FName, LName ORDER BY COUNT(*) DESC LIMIT 1
我可以为你写这个查询。我每小时收费100美元,最低计费时间为两小时,预付款。你有Paypal吗?展示你的尝试,然后我们可以帮助你。。。还有,哪些RDBMS——这可以是特定于DB的…谢谢Havenard,我使用的是SQL Server 2008 R2,第二个条件是createdAt如何?另外,请考虑它是一个示例,即联系人表具有更多的客户ID,因此SELECT结果将是相对于这些条件的一对一关系。再次感谢您的帮助我不知道您的意思,但我想您可以自己排序,以我刚才给您的查询为模型。