【问题标题】:Looping and inserting based on individual column values SQL基于单个列值的循环和插入 SQL
【发布时间】:2018-03-22 21:23:05
【问题描述】:

有问题的表是Purchases (pid, cid, pdate, eid),其中pid 是主键,因此代表个人购买。 cid 代表购买的客户。我必须得到所有购买超过 5 次的客户,并给他们一张免费票(为 cid 创建一个新条目)。最好的方法是什么?

【问题讨论】:

  • 祝你作业顺利......该死的学校!

标签: mysql sql count insert


【解决方案1】:

对表进行内部联接(如果您需要客户的姓名)并按 CID 分组 有计数(CID)> 5

【讨论】:

    【解决方案2】:

    在编写复杂的 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,并且没有表明对如何使用GROUP BY 或聚合函数获取“计数”有任何了解。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 2014-08-05
      • 2020-12-27
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      相关资源
      最近更新 更多