【问题标题】:Displaying distinct count as separate column for each value returned将不同的计数显示为每个返回值的单独列
【发布时间】:2016-04-29 14:44:13
【问题描述】:

Table1(包含订单来源类型信息)

id | name
---------
 0 | App
 1 | Web

Table2(包含订单信息)

order_id | date_ordered | source_id 
   0     |   24/04/2016 |    0
   1     |   24/04/2016 |    1
   2     |   23/04/2016 |    0
   3     |   23/04/2016 |    1
   4     |   23/04/2016 |    0
   5     |   22/04/2016 |    1
   6     |   22/04/2016 |    0

我想显示给定日期每个来源的订单数

Date       | Source Count 0 | Source Count 1
24/04/2016 |       1        |       1
23/04/2016 |       2        |       1
22/04/2016 |       1        |       1

到目前为止我提出的查询:

SELECT
    date_ordered,
    count(distinct),
FROM `event`
 INNER JOIN `Table1`
    ON `id` = `Table2`.`source_id`
 GROUP BY date_ordered
ORDER BY date_ordered desc

我花了很多时间试图弄清楚,但想不出更好的办法。问题是来源的数量是动态的。

【问题讨论】:

    标签: mysql many-to-many inner-join


    【解决方案1】:

    你可以用case和group by

     select date_ordered, 
     case when source_id = 0 then sum(source_id)
     END as  'Source Count 0',    
     case when source_id = 1 then sum(source_id)
     END as  'Source Count 1'
     group by date_ordered 
    

    【讨论】:

    • 如果源是静态的就好了。查询的预执行我不知道表中可能有多少个来源。
    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多