[英]USING SQL CROSS JOIN
我有一個包含調查數據的表,兩個數據點是Ethnicity和Flavor_Pref。 Flavor_Pref保持整數1,2,3,4,5。 1 =不喜歡非常多,5喜歡非常多。
Ethnicity Flavor_Pref
African American 3
Caucasian 2
Asian 4
Hispanic 1
African American 3
Caucasian 4
Asian 5
Hispanic 2
African American 4
Caucasian 1
Asian 4
Hispanic 2
African American 3
Caucasian 2
Asian 2
Hispanic 1
我想運行一個查詢來獲得4列,每個族群一個。 每個組都有不同數量的回復。
這就是我正在做的事情:我獲得了超過1M的結果......我只有400個調查。
select AA.Flavor_Pref as AA,H.Flavor_Pref as H,C.Flavor_Pref AS C,
A.Flavor_Pref AS A from
(SELECT ETHNICITY,Flavor_Pref FROM FLAVORS WHERE ETHNICITY = 'AFRICAN AMERICAN')AS AA
CROSS JOIN
(SELECT ETHNICITY,Flavor_Pref FROM FLAVORS WHERE ETHNICITY = 'HISPANIC') AS H
CROSS JOIN
(SELECT ETHNICITY,Flavor_Pref FROM FLAVORS WHERE ETHNICITY = 'CAUCASIAN') AS C
CROSS JOIN
(SELECT ETHNICITY,Flavor_Pref FROM FLAVORS WHERE ETHNICITY = 'ASIAN' ) AS A
我正在尋找的是:在這種情況下,西班牙裔結果較少,因此沒有任何報道。
African Americans Hispanic Caucasian Asian
3 1 2 4
3 2 4 5
4 2 1 5
. . . .
. . . .
. . . .
3 2 4
2 1 1
你所尋找的是PIVOT
中列荷蘭國際集團行。 以下是執行此操作的標准方法,它將適用於所有RDBMS:
SELECT
MAX(CASE WHEN Ethnicity = 'African American' THEN Flavor_Pref END)
AS 'African Americans',
MAX(CASE WHEN Ethnicity = 'Hispanic' THEN Flavor_Pref END)
AS 'Hispanic',
MAX(CASE WHEN Ethnicity = 'Caucasian' THEN Flavor_Pref END)
AS 'Caucasian',
MAX(CASE WHEN Ethnicity = 'Asian' THEN Flavor_Pref END)
AS 'Asian'
FROM @flavors
GROUP BY Flavor_Pref
你想要每個種族最流行的味道。 您可以使用排名功能在大多數數據庫中執行此操作:
select max(case when ethnicity = 'African American' and seqnum = 1 then flavor_pref end) as AfricanAmerican,
max(case when ethnicity = 'Hispanic' and seqnum = 1 then flavor_pref end) as Hispanic,
max(case when ethnicity = 'Caucasian' and seqnum = 1 then flavor_pref end) as Caucasian,
max(case when ethnicity = 'Asian' and seqnum = 1 then flavor_pref end) as Asian
from (select t.ethnicity, t.flavor_pref, cnt,
row_number() over (partition by t.enthnicity order by cnt desc) as seqnum
from (select t.ethnicity, t.flavor_pref, count(*) as cnt
from t
group by t.ethnicity, t.flavor_pref
) t
) ts
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.