基于单个列值SQL循环和插入

时间:2018-03-22 21:23:05

标签: mysql sql count insert

相关表格为Purchases (pid, cid, pdate, eid),其中pid是主键,因此代表个人购买。 cid代表购买的客户。我必须让所有超过5次购买的客户获得免费机票(为cid创建一个新条目)。什么是最好的方法呢?

2 个答案:

答案 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}获得"计数"计数或聚合函数。)