2017-09-01 91 views
2

我有兩個疑問:通過查詢組合兩個爲了得到結果

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

回答

3

您可以嘗試

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列中使用索引,因此運行速度更快。
1

試試下面的查詢:

SELECT COUNT(*) as adet, MONTHNAME(date_created) as monthname,seller_id 
FROM orders where YEAR(date_created) = 2017 
GROUP BY MONTH(date_created),seller_id 
+0

這個答案也是對的,謝謝 –