簡體   English   中英

連接多個選擇語句的結果

[英]Joining the result of multiple select statements

我想水平合並以下三個選擇語句的結果。 我嘗試使用連接,但不知道如何進行,因為它也涉及到COUNT和GROUP BY。

SELECT DATE(created_at) as date,COUNT(*) as countd1 FROM b_users WHERE last_loggedin_at < DATE_ADD(created_at,INTERVAL 1 DAY) GROUP BY DATE(created_at)
SELECT DATE(created_at) as date,COUNT(*) as countd2 FROM b_users WHERE last_loggedin_at < DATE_ADD(created_at,INTERVAL 2 DAY) GROUP BY DATE(created_at)
SELECT DATE(created_at) as date,COUNT(*) as countd3 FROM b_users WHERE last_loggedin_at < DATE_ADD(created_at,INTERVAL 3 DAY) GROUP BY DATE(created_at)

單個結果將是

date        countd1
2011-12-01   100
2011-12-02   120
2011-12-03   130

date        countd2
2011-12-01   200
2011-12-02   220
2011-12-03   230

date        countd3
2011-12-01   300
2011-12-02   320
2011-12-03   330

但我想將它們合並,以便得到以下結果

date        countd1    countd2    countd3
2011-12-01   100        200        300
2011-12-02   120        220        320
2011-12-03   130        230        330

我該怎么做呢?

是否可以執行以下查詢

SELECT a, COUNT(b where condition), COUNT(c where condition) FROM table GROUP BY a

更新資料

biziclop提供了出色的解決方案

SELECT DATE(created_at) AS date,
SUM(last_loggedin_at < DATE_ADD( created_at,INTERVAL 1 DAY )) AS countd1,
SUM(last_loggedin_at < DATE_ADD( created_at,INTERVAL 2 DAY )) AS countd2,
SUM(last_loggedin_at < DATE_ADD( created_at,INTERVAL 3 DAY )) AS countd3
FROM b_users GROUP BY DATE(created_at)

解決了,謝謝! :)

在MySQL中,如果比較結果為true,則比較結果為1;如果為false,則比較結果為0,因此可以對它們進行SUM()

SELECT
  DATE(created_at) AS date,
  SUM( last_loggedin_at < DATE_ADD( created_at,INTERVAL 1 DAY )) AS countd1,
  SUM( last_loggedin_at < DATE_ADD( created_at,INTERVAL 2 DAY )) AS countd2,
  SUM( last_loggedin_at < DATE_ADD( created_at,INTERVAL 3 DAY )) AS countd3,
FROM b_users
GROUP BY DATE(created_at)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM