相关表格为Purchases (pid, cid, pdate, eid)
,其中pid
是主键,因此代表个人购买。 cid
代表购买的客户。我必须让所有超过5次购买的客户获得免费机票(为cid
创建一个新条目)。什么是最好的方法呢?
答案 0 :(得分:0)
对表进行内部联接(如果需要客户名称)并按CID进行分组 HUNT COUNT(CID)> 5
答案 1 :(得分:0)
编写复杂的SQL查询时,最好的方法之一是迭代开发......从小处开始,然后从那里开始工作。
例如,获取至少购买一次的每位客户的购买次数:
SELECT p.cid
, COUNT(1) AS cnt_purchases
FROM purchase p
GROUP BY p.cid
ORDER BY p.cid
请注意GROUP BY
子句和聚合COUNT
函数的用法。
如果我们想要相同的结果,但想要排除只有一次购买的客户,该怎么办?我们可以在HAVING
子句中包含聚合函数结果的条件。
例如:
SELECT p.cid
, COUNT(1) AS cnt_purchases
FROM purchase p
GROUP BY p.cid
HAVING COUNT(1) > 1
ORDER BY p.cid
应该很容易看出我们如何排除少于五次购买的客户。
在我们尝试解决更复杂的问题之前,我们需要了解这些模式。
(问题并不包括任何 SQL,并且没有表明对如何使用{{1}获得"计数"计数或聚合函数。)