我正在使用IBM的DB2;但是我希望这可以使用SQL标准来完成,而不使用每个数据库制造商添加的附加功能。对于常见的元素,如何找到基于两列的值? SQL
我的问题:
对于每一个CID(客户ID),我需要从中找到最购买作了俱乐部。
在下表中,客户#1('cid = 1')从俱乐部'读者文摘'购买了大部分书籍。我能得到这个部分使用做:Find most frequent value in SQL column
然而CID = 2是多少(对我来说)硬,我坚持。对于'cid = 2',我们可以看到'CLUB'栏下最常出现的刺痛是'Oprah'和'YRB Gold'之间的联系 - 但是当我们查看'QNTY'列时, )'cid = 2'的最终答案是'YRB_gold'。 'YRB_GOLD'售出5本书,其中'OPRAH'只售出4本书。
我把 'CID = 3' 这里还有:
有47个客户(CID)。我的问题是:我如何贯穿每个'CID',并考虑'CLUB'下最常出现的字符串,同时还要跟踪每个俱乐部的'QNTY'?如果您选择提供帮助,您能否提供最贴牌的中性答案?先谢谢你。
******************************编辑#1 ************* ****************************
感谢下面的答案。目前我有一个问题使其工作。
表名是'yrb_purchase'。 当我输入的一切: SELECT cid, club, qnty AS q1 FROM (SELECT cid, club, sum(qnty) AS q2, row_number() OVER (PARTITION BY cid ORDER BY sum(q2) DESC) AS seqnum FROM yrb_purchase GROUP BY cid, club) cc WHERE seqnum = 1
我得到一个错误:SQL0206N "Q2" is not valid in the context where it is used. SQLSTATE=42703
目前正在试图找出如何解决这个问题。