有这样一个(用户消费信息)表create table bank(
  int id,//编号
  int uid,//用户ID
  int money,//银行卡余额
  int shopping, //在某超市累计消费金额
  date ddate//记录时间
);
其中男人(uid=1,3,5),女人(uid=2,4)
数据如下:
id uid money shopping   ddate
1   1   1000 500       2011-01-01 02:11:22   
2   2   1200 100       2011-01-01 02:11:25
3   3   1000 200       2011-01-01 02:11:26
4   1   2000 1000      2011-01-02 05:11:28
5   2   3100 100       2011-01-02 05:11:22
6   3   2000 210       2011-01-02 05:11:32
7   4   1020 100       2011-01-02 15:11:22
8   1   5000 1100      2011-01-03 05:10:22
9   3   6000 230       2011-01-03 05:20:22
10  1   8000 2110      2011-01-04 06:12:22
11  2   3200 200       2011-01-04 08:15:22
12  3   6100 330       2011-01-04 05:18:22
13  4   2100 150       2011-01-04 05:10:22
14  1   8822 2200      2011-01-05 05:10:22
15  2   3322 340       2011-01-05 09:10:22
16  4   2322 340       2011-01-05 02:10:22
17  2   3500 350       2011-01-06 03:10:22
18  3   7500 350       2011-01-06 06:10:22
19  4   2300 650       2011-01-06 09:10:22
20  5   2100 200       2011-01-06 01:10:22
21  2   3600 360       2011-01-07 03:10:22
22  3   7800 370       2011-01-07 06:10:22
23  4   2800 280       2011-01-07 09:10:22
24  5   2900 220       2011-01-07 01:10:22
25  2   3800 380       2011-01-08 03:10:22
26  3   7900 390       2011-01-08 06:10:22
27  4   2000 290       2011-01-08 09:10:22
28  5   3200 230       2011-01-08 01:10:22
现在需要统计:
男人,女人分别从2号到6号,有多少消费者,银行卡增加多少钱,在超市消费总金额是多少?
希望能用一条SQL解决这个问题
个人感觉这是男人的正确答案:(通过差值来求和)
消费者有5个(3男2女)
男人:2100+200+1500+300+3822 200+550+140+250+100

解决方案 »

  1.   

    select uid%2,count(*) as 有多少消费者,sum(shopping) as 在超市消费总金额
    from bank
    group by uid%2
      

  2.   

    create table bank(
      int id,//编号
      int uid,//用户ID
      int money,//银行卡余额
      int shopping, //在某超市累计消费金额
      date ddate//记录时间
    );
    注意是累计消费金额,而不是每次消费金额,不是简单求和,而是通过差值求和
      

  3.   

    select uid%2,count(*) as 有多少消费者,max(shopping)-min(shopping)  as 在超市消费总金额
    from bank
    group by uid%2
      

  4.   

    select if(uid in (1,2),'M','F'),count(*) as 有多少消费者,max(shopping)-min(shopping)  as 在超市消费总金额
    from bank
    group by if(uid in (1,2),'M','F')
    不会再有什么新条件了吧。
      

  5.   

    感觉count(*)有点问题,结果大于正确数值,好像有个累加过程