[英]SQL divide results into 2 columns
我有一個關於使用SQL檢索數據的問題
我想得到
count(comments_id) where comment_year = 2012 and
count(comments_id) where comment_year = 2013
在一個查詢中獲得如下輸出:
year12_comments | year13_comments
7 | 8
我希望清楚。
像這樣
...
SUM(CASE WHEN comment_year = 2012 THEN 1 ELSE 0 END) AS year12_comments,
SUM(CASE WHEN comment_year = 2013 THEN 1 ELSE 0 END) AS year13_comments,
...
更新:
如果要獲取它們之間的百分比,可以將它們包含在子查詢中,如下所示:
SELECT
(year12_comments / year13_comments) * 100
FROM
(
SELECT
...
SUM(CASE WHEN comment_year = 2012 THEN 1 ELSE 0 END) AS year12_comments,
SUM(CASE WHEN comment_year = 2013 THEN 1 ELSE 0 END) AS year13_comments,
...
) sub
如果要創建year12_comments, year13_comments
以及新列百分比,只需將它們包括在SELECT
語句中,如下所示:
SELECT
year12_comments,
year13_comments,
(year12_comments / year13_comments) * 100 AS ThePercenatge
FROM
(
SELECT
...
SUM(CASE WHEN comment_year = 2012 THEN 1 ELSE 0 END) AS year12_comments,
SUM(CASE WHEN comment_year = 2013 THEN 1 ELSE 0 END) AS year13_comments,
...
) sub
COUNT(CASE WHEN comment_year = 2012 THEN 1 END) year12_comments,
COUNT(CASE WHEN comment_year = 2013 THEN 1 END) year13_comments,
如果您使用的是MS SQL Server 2005
或更高版本,則可以使用PIVOT
除非您可以使用PIVOT函數@HamletHakobyan建議,否則恕我直言,這是一個錯誤的決定。 除非世界另一端發生在2013年,否則您也必須在2014年這樣做。 我也希望為用戶和年份使用一個簡單的分組依據:
SELECT user_id, comment_year, count(1)
FROM mytable
GROUP BY user_id, comment_year
當然,您必須在應用程序中編寫一些代碼,但是從清晰度的角度來看,這似乎是可行的方法...
(順便說一句,我認為這也比CASE WHEN
結構還要快...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.