通过查询合并两个顺序以获得结果

前古普塔

我有两个查询:

SELECT COUNT(*) as adet, MONTHNAME(date_created) as monthname
FROM orders 
WHERE YEAR(date_created) = 2017
GROUP BY MONTH(date_created) 

返回此结果

adet monthname 
----------------
17   January
24   February
45   March 
40   April

和另一个查询:

SELECT COUNT(*) as adet, seller_id
FROM orders 
WHERE YEAR(date_created) = 2017
GROUP BY seller_id

返回此结果:

adet seller_id
---------------
120  20
120  21
500  22
400  23

我如何结合这两个查询来获得如下结果:

adet month seller_id
--------------------
-09- -Jan- --20--
-05- -Fab- --20--
-05- -Mar- --20--
...
-05- -jan- --21--
-04- -Fab- --21--
...
-05- -jan- --22--
-04- -Fab- --22--
琼斯

你可以试试

 SELECT COUNT(*) adet, LAST_DAY(date_created) month_ending, seller_id
   FROM orders
  WHERE date_created >= DATE_FORMAT(CURDATE(),'%Y-01-01')
    AND date_created < DATE_FORMAT(CURDATE(),'%Y-01-01') + INTERVAL 1 YEAR
  GROUP BY LAST_DAY(date_created), seller_id

为什么要使用看起来如此复杂的东西?因为

  1. 它将在明年工作。
  2. 它将处理不以年份为边界的日期范围
  3. 它将能够在您的date_created上使用索引,因此运行速度更快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章