[英]How to output multiple columns from one MySQL column?
請考慮下表
tweets
---------------------------------
tweet_id nyse_date class type
---------------------------------
1 2011-03-12 2 0
2 2011-03-12 1 1
3 2011-03-12 1 0
4 2011-03-12 1 0
5 2011-03-12 0 0
6 2011-03-12 1 0
7 2011-03-12 3 2
8 2011-03-12 3 0
每條推文都分配了一個'class',它是1,2或3,'type'是0,1或2.我想概述每個類和類型中的推文數量,如下所示:
nyse_date class1 class2 class3 type0 type1 type2
-------------------------------------------------------
2011-03-12 3 1 2 6 1 1
我開始使用以下查詢(按日期分組,因為真實表有許多不同的日期):
SELECT
nyse_date,
COUNT(class) AS class1 FROM tweets WHERE class = 1,
COUNT(class) AS class2 FROM tweets WHERE class = 2
GROUP BY
nyse_date ASC
預期的產出是
nyse_date class1 class2
--------------------------
2011-03-12 3 1
但我得到了一個錯誤。 我相信這與我每次查詢只能使用一個WHERE子句(我使用的是2)這一事實有關,但我不知道替代方案是什么。 你呢?
任何幫助是極大的贊賞 :-)
試試這個:
SELECT
nyse_date,
SUM(class = 1) AS class1,
SUM(class = 2) AS class2,
SUM(class = 3) AS class3
FROM
tweets
GROUP BY
nyse_date ASC
class = 1
是一個布爾表達式,它的值為TRUE
或FALSE
。 TRUE
等於1
。 因此,使用SUM
實際上意味着“計算條件保持的所有行”
在MySql中使用GROUP_CONCAT聚合函數:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
這有用嗎?
SELECT nyse_date, SUM( IF( class =1, 1, 0 ) ) AS class1, SUM( IF( class =2, 1, 0 ) ) AS class2
FROM tweets
GROUP BY nyse_date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.