练习题2:
数据来源:https://tianchi.aliyun.com/dataset/dataDetail?dataId=44
请使用 Wine Quality Data 数据集《winequality-red.csv》,找出 pH=3.03的所有红葡萄酒,然后,对其 citric acid 进行中式排名(相同排名的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”)
select pH,
`citric acid`,
dense_rank() over (order by `citric acid`) as rankn
from `winequality-red`
where pH=3.03;
在MySQL中,为了区分MySQL的关键字与普通字符,MySQL引入了一个反引号。不同于单( ' )
双( " )引号
但是有一点需要注意,后面列的注释不能用反引号,因为这只是一个普通字符串,不是MySQL的关键字。
在英文键盘输入环境下,按图示按钮输入反引号

练习题6:
数据来源:数据集-阿里云天池
请使用 Wine Quality Data 数据集《winequality-white.csv》,找出 pH=3.63的所有白葡萄酒,然后,对其 residual sugar 量进行英式排名(非连续的排名)
select pH,
`residual sugar`,
rank() over (order by `residual sugar`) as rankn
from `winequality-white`
where pH=3.63;
练习题4:
数据来源:数据集-阿里云天池
请使用A股上市公司季度营收预测中的数据集《Macro&Industry.xlsx》中的sheet-INDIC_DATA,请计算全社会用电量:第一产业:当月值在2015年用电最高峰是发生在哪月?并且相比去年同期增长/减少了多少个百分比?
-- 2015年的用电最高峰在哪一个月
select period_date,
max(data_value) finalvalue
from `macro industry`
where indic_id = '2020101522'
and year(period_date)=2015
group by period_date
order by finalvalue desc
limit 1;
加入limit 1会搜索到一行数据就停止搜索,在已知需要的数据数目为1的时候可以加快查询效率
-- 相比去年同期增长/减少了多少个百分比?
SELECT BaseData.*,
(BaseData.FianlValue - YoY.FianlValue) / YoY.FianlValue as 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
上面的语句是将2015的用电量最高峰的月份的列名命名为BaseDate,并将增长的百分比命名为新的一列YoY
下面是将2014的同期用电量进行左连接,保证年份相同月份相同进行对比
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 ) as YoY
ON YEAR(BaseData.PERIOD_DATE) = YEAR(YoY.PERIOD_DATE) + 1
AND MONTH(BaseData.PERIOD_DATE) = MONTH(YoY.PERIOD_DATE);
这里就做了三道题目,其他的数据量太大,就挑选了这三道数据量少的来做
本文通过三个SQL查询实例展示了如何在WineQualityData数据集中筛选特定条件的数据并进行排名。在红葡萄酒中,针对pH=3.03的样本,对citricacid进行中式排名;在白葡萄酒中,对pH=3.63的样本,residualsugar进行英式排名。此外,还介绍了如何从A股上市公司季度营收预测数据中找出2015年全社会用电量最高月份及其同比增长率。这些查询涉及到了数据筛选、排序、排名以及增长率计算等SQL核心概念。
379

被折叠的 条评论
为什么被折叠?



