SQL DataFlowを使用すると、中央値を見つけることができます。これはMySQLまたはRedshift DataFlowで実行できます。
MySQL
Transform_data_1:
SELECT
* ,
@row := @row + 1 AS 'row count'
From input_dataset,
(SELECT @row:=0) a
ORDER BY `value`
Transform_data_2:
SELECT
*,
(CASE
WHEN (SELECT MAX(`row count`) FROM transform_data_1) % 2 = 0
THEN ((SELECT `value` FROM transform_data_1 WHERE `row count` = (((SELECT MAX(`row count`) FROM transform_data_1)/2)+1)) + (SELECT `value` FROM transform_data_1 WHERE `row count` = (((SELECT MAX(`row count`) FROM transform_data_1)/2))) ) /2
WHEN (SELECT MAX(`row count`) FROM transform_data_1) % 2 != 0
THEN (SELECT `value` from transform_data_1 WHERE `row count` = (((SELECT MAX(`row count`) FROM transform_data_1)+1)/2))
END) AS 'Median'
FROM transform_data_1
出力:
SELECT * FROM transform_data_2
Redshift
Redshiftには範囲の中央値を簡単に計算できる独自の関数があります。
MEDIAN ("column_name")
この関数は、列の範囲全体の中央値を見つけるときに最もよく使用されます。
Transform_data_1:
SELECT
MEDIAN ("total_line_items_price")
FROM "table_name"
出力:
MEDIAN
関数は別の列でグループ化することもできます。
MEDIAN ( "column_name" ) OVER ( PARTITION BY "partition_column_name" )
Transform_data_1:
SELECT
"email",
MEDIAN ("total_line_items_price") OVER ("email")
FROM "table_name"
出力:
これで1人あたりのアイテム価格の中央値がわかります。
コメント
0件のコメント
サインインしてコメントを残してください。