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]]

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

阅读 2.3k
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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题