Task06-天池龙珠计划SQL训练营

学习产出

  • 练习题一
SELECT
	MarketData.*,
	OperatingData.INDIC_NAME_EN,
	OperatingData.
VALUE
	,
	IncomeStatement.N_INCOME,
	IncomeStatement.T_COGS,
	IncomeStatement.T_REVENUE 
FROM
	( SELECT TICKER_SYMBOL, END_DATE, CLOSE_PRICE 
	FROM `market data` 
	WHERE TICKER_SYMBOL IN ( '600383', '600048' ) ) MarketData
	LEFT JOIN -- operating data
	( SELECT TICKER_SYMBOL, INDIC_NAME_EN, END_DATE, VALUE 
	FROM `company operating` 
	WHERE TICKER_SYMBOL IN ( '600383', '600048' ) ) OperatingData 
	ON MarketData.TICKER_SYMBOL = OperatingData.TICKER_SYMBOL 
	AND MarketData.END_DATE = OperatingData.END_DATE
	LEFT JOIN -- income statement
	( SELECT DISTINCT TICKER_SYMBOL, END_DATE, T_REVENUE, T_COGS, N_INCOME 
	FROM `income statement` 
	WHERE TICKER_SYMBOL IN ( '600383', '600048' ) ) IncomeStatement 
	ON MarketData.TICKER_SYMBOL = IncomeStatement.TICKER_SYMBOL 
	AND MarketData.END_DATE = IncomeStatement.END_DATE 
ORDER BY
	MarketData.TICKER_SYMBOL,
	MarketData.END_DATE;
  • 练习题二
SELECT
	pH,
	`citric acid`,
	DENSE_RANK() OVER ( ORDER BY `citric acid` ) AS rankn 
FROM
	`winequality-red` 
WHERE
	pH = 3.03;
  • 练习题三

发放优惠券总⾦额最多的商家:

SELECT
	Merchant_id,-- SUM(SUBSTRING_INDEX(`Discount_rate`,':', 1)) AS sale_amount,
	SUM(
	SUBSTRING_INDEX( `Discount_rate`, ':',- 1 )) AS discount_amount 
FROM
	ccf_offline_stage1_test_revised 
WHERE
	Date_received BETWEEN '2016-07-01' 
	AND '2016-07-31' 
GROUP BY
	Merchant_id 
ORDER BY
	discount_amount DESC 
	LIMIT 1;

发放优惠券张数最多的商家:

SELECT
	Merchant_id,
	COUNT( 1 ) AS cnt 
FROM
	ccf_offline_stage1_test_revised 
WHERE
	Date_received BETWEEN '2016-07-01' 
	AND '2016-07-31' 
GROUP BY
	Merchant_id 
ORDER BY
	cnt DESC 
	LIMIT 1;
  • 练习题四

 2015年⽤电最⾼峰是发⽣在哪⽉:

SELECT
	PERIOD_DATE,
	MAX( DATA_VALUE ) FianlValue 
FROM
	`macro industry` 
WHERE
	INDIC_ID = '2020101522' 
	AND YEAR ( PERIOD_DATE ) = 2015 
GROUP BY
	PERIOD_DATE 
ORDER BY
	FianlValue DESC 
	LIMIT 1;

 并且相⽐去年同期增⻓/减少了多少个百分⽐:

SELECT
	BaseData.*,
	( BaseData.FianlValue - YoY.FianlValue ) / YoY.FianlValue YoY 
FROM
	(
	SELECT
		PERIOD_DATE,
		MAX( DATA_VALUE ) FianlValue 
	FROM
		`macro industry` 
	WHERE
		INDIC_ID = '2020101522' 
		AND YEAR ( PERIOD_DATE ) = 2015 
	GROUP BY
		PERIOD_DATE 
	ORDER BY
		FianlValue DESC 
		LIMIT 1 
	) BaseData
	LEFT JOIN -- YOY
	( SELECT PERIOD_DATE, MAX( DATA_VALUE ) FianlValue FROM `macro industry` 
	WHERE INDIC_ID = '2020101522' AND YEAR ( PERIOD_DATE ) = 2014 
	GROUP BY PERIOD_DATE ) YoY ON YEAR ( BaseData.PERIOD_DATE ) = YEAR ( YoY.PERIOD_DATE ) + 1 
	AND MONTH ( BaseData.PERIOD_DATE ) = MONTH ( YoY.PERIOD_DATE );
  • 练习题五

 2016年6⽉期间,线上总体优惠券弃⽤率为多少:

SELECT
	SUM( CASE WHEN Date = '0000-00-00' AND Coupon_id IS NOT NULL THEN 1 ELSE 0 END ) / SUM( CASE WHEN Coupon_id IS NOT NULL THEN 1 ELSE 0 END ) AS discard_rate 
FROM
	ccf_online_stage1_train 
WHERE
	Date_received BETWEEN '2016-06-01' 
	AND '2016-06-30';

2016年6⽉期间,优惠券弃⽤率最⾼的商家:

SELECT
	Merchant_id,
	SUM( CASE WHEN Date = '0000-00-00' AND Coupon_id IS NOT NULL THEN 1 ELSE 0 END ) / SUM( CASE WHEN Coupon_id IS NOT NULL THEN 1 ELSE 0 END ) AS discard_rate 
FROM
	ccf_online_stage1_train 
WHERE
	Date_received BETWEEN '2016-06-01' 
	AND '2016-06-30' 
GROUP BY
	Merchant_id 
ORDER BY
	discard_rate DESC 
	LIMIT 1;
  • 练习题六
SELECT
	pH,
	`residual sugar`,
	RANK() OVER ( ORDER BY `residual sugar` ) AS rankn 
FROM
	`winequality-white` 
WHERE
	pH = 3.63;
  • 练习题七

 计算截⽌到2018年底,市值最⼤的三个⾏业是哪些:

SELECT
	TYPE_NAME_CN,
	SUM( MARKET_VALUE ) 
FROM
	`market data` 
WHERE
	YEAR ( END_DATE ) = '2018-12-31' 
GROUP BY
	TYPE_NAME_CN 
ORDER BY
	SUM( MARKET_VALUE ) DESC 
	LIMIT 3;

这三个⾏业⾥市值最⼤的三个公司是哪些:

SELECT
	BaseData.TYPE_NAME_CN,
	BaseData.TICKER_SYMBOL 
FROM
	( SELECT TYPE_NAME_CN, TICKER_SYMBOL, MARKET_VALUE, ROW_NUMBER() OVER 
	( PARTITION BY TYPE_NAME_CN ORDER BY MARKET_VALUE ) CompanyRanking 
	FROM `market data` ) BaseData
	LEFT JOIN (
	SELECT
		TYPE_NAME_CN,
		SUM( MARKET_VALUE ) 
	FROM
		`market data` 
	WHERE
		YEAR ( END_DATE ) = '2018-12-31' 
	GROUP BY
		TYPE_NAME_CN 
	ORDER BY
		SUM( MARKET_VALUE ) DESC 
		LIMIT 3 
	) top3Type ON BaseData.TYPE_NAME_CN = top3Type.TYPE_NAME_CN 
WHERE
	CompanyRanking <= 3 
	AND top3Type.TYPE_NAME_CN IS NOT NULL;
  • 练习题八
SELECT
	User_id,
	SUM( couponCount ) couponCount 
FROM
	(
	SELECT
		User_id,
		count(*) couponCount 
	FROM
		`ccf_online_stage1_train` 
	WHERE
		( Date != 'null' AND Coupon_id != 'null' ) 
		AND ( LEFT ( DATE, 4 )= 2016 ) 
	GROUP BY
		User_id UNION ALL
	SELECT
		User_id,
		COUNT(*) couponCount 
	FROM
		`ccf_offline_stage1_train` 
	WHERE
		( Date != 'null' AND Coupon_id != 'null' ) 
		AND ( LEFT ( DATE, 4 )= 2016 ) 
	GROUP BY
		User_id 
	) BaseData 
GROUP BY
	User_id 
ORDER BY
	SUM( couponCount ) DESC 
	LIMIT 1;
  • 练习题九
SELECT
	* 
FROM
	(
	SELECT
		TICKER_SYMBOL,
		YEAR ( END_DATE ) YEAR,
		QUARTER ( END_DATE ) QUARTER,
		SUM( VALUE ) Amount 
	FROM
		`company operating` 
	WHERE
		INDIC_NAME_EN = 'Baiyun Airport:Passenger throughput' 
	GROUP BY
		TICKER_SYMBOL,
		YEAR ( END_DATE ),
		QUARTER ( END_DATE ) 
	ORDER BY
		SUM( VALUE ) DESC 
		LIMIT 1 
	) BaseData
	LEFT JOIN -- income statement
	(
	SELECT
		TICKER_SYMBOL,
		YEAR ( END_DATE ) YEAR,
		QUARTER ( END_DATE ) QUARTER,
		SUM( N_INCOME ) Amount 
	FROM
		`income statement` 
	GROUP BY
		TICKER_SYMBOL,
		YEAR ( END_DATE ),
		QUARTER ( END_DATE ) 
	) Income ON BaseData.TICKER_SYMBOL = Income.TICKER_SYMBOL 
	AND BaseData.YEAR = Income.YEAR 
	AND BaseData.QUARTER = Income.QUARTER;
  • 练习题十
SELECT
	Merchant_id,
	SUM( discount_amount ) discount_amount 
FROM
	(
	SELECT
		Merchant_id,
		SUM(
		SUBSTRING_INDEX( `Discount_rate`, ':',- 1 )) AS discount_amount 
	FROM
		`ccf_online_stage1_train` 
	WHERE
		( Date != 'null' AND Coupon_id != 'null' ) 
		AND ( LEFT ( DATE, 4 )= 2016 ) 
		AND MID( DATE, 5, 2 ) = '06' 
	GROUP BY
		Merchant_id UNION ALL
	SELECT
		Merchant_id,
		SUM(
		SUBSTRING_INDEX( `Discount_rate`, ':',- 1 )) AS discount_amount 
	FROM
		`ccf_offline_stage1_train` 
	WHERE
		( Date != 'null' AND Coupon_id != 'null' ) 
		AND ( LEFT ( DATE, 4 )= 2016 ) 
		AND MID( DATE, 5, 2 ) = '06' 
	GROUP BY
		Merchant_id 
	) BaseData 
GROUP BY
	Merchant_id 
ORDER BY
	SUM( discount_amount ) DESC 
	LIMIT 1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值