Harrow データ分析 (SQL) 筆記試験

データ

ここに画像の説明を挿入

データベースのインポート

最初にデータベースをインポートします:
ここに画像の説明を挿入
個別にインポートします:
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
次のように:
ここに画像の説明を挿入
同じ方法で他のいくつかのデータテーブルをインポートします:
ここに画像の説明を挿入

データを理解する

カテゴリ: cate ブランド: ブランド 売上: qtty 売上: amount ユーザー ID: pin 製品 ID: SKUID

  • ピンテーブル: dt、skuid、pin の 3 つの特徴的な関係。つまり、時刻、ユーザー ID、アイテム ID です。
  • sku テーブル: skuid、cate、およびブランド機能の関係。つまり、品番、カテゴリー、ブランドの関係です。
  • 注文表: dt、skuid、sku_name、qtty、金額の特徴の関係。すなわち、時間、商品番号、商品名、売上、売上。

カテゴリは、ブランドの下のカテゴリです。Huaweiのラップトップなど。

必要とする

1. 単価が 0 のすべての製品は売上に含まれません2.
単価が 500 未満のノートブックは売上に含まれません
.
カテゴリの下のブランドの重複排除されたユーザーの数 (たとえば、ユーザー ID が 1 日で Xiaomi の 3 つの製品を閲覧した場合、このカテゴリの Xiaomi ブランドへの訪問者数が記録されます 1) 5、2019
年と 2018 年の売上は、1 位から156位の売上であり、前年比データ10 進
形式で表すことができます。2 桁のままにしてください。

ここに画像の説明を挿入

ここに画像の説明を挿入

アイデア

  • 注文テーブルは、注文のブランドを取り出すために sku テーブルに関連付けられています
  • 合計で19歳かどうかを判断するためにifを使用します
  • 最初の 2 つはフィルタリングの場所で、名前を変更する場合は case が続き、最初はサブクエリでフィルタリングします。これは主にコード スタイルを調べます。

私のコード

SELECT
	result2.*,
	ROUND( result2.19年销量 / result2.18年销量, 2 ) AS 19年销量同比,
	ROUND( result2.19年销额 / result2.18年销额, 2 ) AS 19年销额同比,
	ROUND( result2.19年访客量 / result2.18年访客量, 2 ) AS 19年访客量同比 
FROM
	(
	SELECT
		result.cate 品类,
		result.brand 品牌,
		SUM(
		CASE
				
				WHEN YEAR ( result.order_dt ) = 2019 
				AND result.unit_price > 0 
				AND result.sku_name NOT LIKE '%补差价%' 
				AND DAY ( result.order_dt ) BETWEEN 1 
				AND 15 
				AND ( CASE WHEN result.cate = '笔记本' AND result.unit_price < 500 THEN NULL ELSE result.qtty END ) THEN
					result.qtty ELSE NULL 
				END 
				) AS 19年销量,
				SUM( CASE WHEN YEAR ( result.order_dt ) = 2019 AND result.sku_name NOT LIKE '%补差价%' THEN result.amount ELSE NULL END ) 19年销额,
				COUNT( DISTINCT CASE WHEN YEAR ( result.pin_dt ) = 2019 AND result.sku_name NOT LIKE '%补差价%' THEN result.pin ELSE NULL END ) AS 19年访客量,
				SUM(
				CASE
						
						WHEN YEAR ( result.order_dt ) = 2018 
						AND result.unit_price > 0 
						AND result.sku_name NOT LIKE '%补差价%' 
						AND DAY ( result.order_dt ) BETWEEN 1 
						AND 15 
						AND ( CASE WHEN result.cate = '笔记本' AND result.unit_price < 500 THEN NULL ELSE result.qtty END ) THEN
							result.qtty ELSE NULL 
						END 
						) AS 18年销量,
						SUM( CASE WHEN YEAR ( result.order_dt ) = 2018 AND result.sku_name NOT LIKE '%补差价%' THEN result.amount ELSE NULL END ) 18年销额,
						COUNT( DISTINCT CASE WHEN YEAR ( result.pin_dt ) = 2018 AND result.sku_name NOT LIKE '%补差价%' THEN result.pin ELSE NULL END ) AS 18年访客量 
					FROM
						(
						SELECT
							sku.cate,
						CASE
								
								WHEN `order`.sku_name LIKE '%荣耀%' THEN
								'华为' ELSE sku.brand 
							END brand,
		`order`.skuid,
		`order`.qtty,
		`order`.amount,
		`order`.sku_name,
		`order`.amount / `order`.qtty AS unit_price,
		`order`.dt AS order_dt,
		pin.pin,
		pin.dt AS pin_dt 
	FROM
		sku
		JOIN `order` ON sku.skuid = `order`.skuid
		JOIN pin ON sku.skuid = pin.skuid 
	) AS result 
GROUP BY
	result.cate,
	result.brand 
	) AS result2;

結果:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_46211269/article/details/126582682