mySQL算出一个或两个以上的人数?

数据库查询结果:

clipboard.png

在11/11,ID1购买了3次
在11/11,ID2购买了10次
在11月12日,ID36购买了1次
在11月12日,ID37购买了1次

SQL语句「$ chartData」

选择
      count(id)为次,
      ID,
      FROM_UNIXTIME(add_time,'%m /%d')为add_date
      FROM user_order
      GROUP BY id

疑问
我目的是想找出整月份该天「购买一次」的有几人(几笔),购买两次以上的有几人
我这样的语句是对的吗?
我目的是要丢到谷歌的图表,但我发现这样好像不太对,我自己也找不到原因......
https://developers.google.com...
他要的格式是这样

data.addRows([
        [1,37.8,80.8,41.8],
        [2,30.9,69.5,32.4],
        [3,25.4,57,25.7],
        [4,11.7,18.8,10.5],
        [5,11.9,17.6,10.4],
        [6,8.8,13.6,7.7],
        [7,7.6,12.3,9.6],
        [8,12.3,29.2,10.6],
        [9,16.9,42.9,14.8],
        [10,12.8,30.9,11.6],
        [11,5.3,7.9,4.7],
        [12,6.6,8.4,5.2],
        [13,4.8,6.3,3.6],
        [14,1,4,6.2,3.4]
      ]);

我的PHP脚本

foreach($ chartData as $ key){
$ new = null;
        $ old = null;
        if($ key ['times'] == 1){
          $ new + = 1;
          $ old = 0;
        } else {
          $ new = 0;
          $ old + = 1;
        }

        $ data [] = array(
          (int)substr($ key ['add_date'],3,2),(int)$ new,(int)$ old
        );
}

印出的結果是

[[11,0,1],[11,0,1],[12,1,0],[12,1,0]]

第一个印出日期,第二是只有购买一次的人数,第二是购买两次以上的人数
感觉还是怪怪的,有大神给个思路吗?

阅读 605
评论
    2 个回答

    直到遇到问题,一般人的思路都是对的!!!
    现在是不知道你遇到什么问题了啊!!!
    是sql写的不对?还是表格显示不出来?

          SELECT 
          count(*)as `次数`,
          id,
          date(add_date) as `add_date`
          FROM user_order
          GROUP BY id ,date(add_date)

    这个统计是对的,应该也得把add_date算上
    这样你就会发现 id为2的用户不会只在11号买了10件东西,也可能是在12号买了一些其他东西。。。。。
    其次 在表格显示的时候数据应该是

    [
      [11,first_buy,secend_buy],
      [12,first_buy,secend_buy],
      [13,first_buy,secend_buy],
      [14,first_buy,secend_buy],
    ]

    这个样子的

      感觉日期作为条件,再进行ID和购买次数的查询会比较直观

      SELECT id, times FROM table WHERE date = '2018-11-11' GROUP BY id
        撰写回答

        登录后参与交流、获取后续更新提醒