Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 找到行业前30%的人';过去12个月通过SQL实现的收入_Mysql_Sql - Fatal编程技术网

Mysql 找到行业前30%的人';过去12个月通过SQL实现的收入

Mysql 找到行业前30%的人';过去12个月通过SQL实现的收入,mysql,sql,Mysql,Sql,我有一张名为revenue的桌子, 列有收入和月份以及行业类别和行业姓氏 如何发现过去12个月的收入处于行业前30%的位置, 我需要在同一行业类别中排名前30% industry surname revenue month industry category A $2000 2020/01 Agriculture B $4000 2020/09

我有一张名为revenue的桌子, 列有收入和月份以及行业类别和行业姓氏

如何发现过去12个月的收入处于行业前30%的位置, 我需要在同一行业类别中排名前30%

industry surname   revenue     month           industry category   

A                 $2000       2020/01           Agriculture
B                $4000        2020/09           Industrial
C                $9900        2020/05           Agriculture
D                $6000        2020/09           Industrial
A                 $2000       2020/02           Agriculture
B                $3500        2020/08           Industrial
A                 $1000       2020/05           Agriculture
A                 $7000       2020/08           Agriculture
A                 $5000       2020/12           Agriculture

行业可能是A~Z,月份可能是2020/01~2020/12

此查询肯定会对您有所帮助

SELECT A.*, P.30_PERCENT_REVENUE FROM STACK_USER.revenue AS A
JOIN
(SELECT TRIM(B.industry_category) AS industry_category, (((SELECT SUM(REVENUE) FROM STACK_USER.revenue WHERE industry_category=B.industry_category)/100) *30) 
AS 30_PERCENT_REVENUE FROM STACK_USER.revenue AS B GROUP BY B.industry_category AND MONTH(DATE)>=MONTH(SYSDATE()) AND YEAR(DATE)>=YEAR(SYSDATE())-1) AS P
ON TRIM(A.industry_category)=P.industry_category AND A.revenue>=P.30_PERCENT_REVENUE;
我被你的问题弄糊涂了,因为这个问题不太清楚

所以这里我理解的是,你必须计算过去12个月的所有类别收入(30%)

而(行业姓氏)的收入比过去12个月高出30%的类别收入,因此这将仅给出该结果,但

在这里,我将日期用作完整日期,下面是创建表的脚本

CREATE TABLE STACK_USER.REVENUE
(
        INDUSTRY_SURNAME VARCHAR(100), 
        REVENUE FLOAT, DATE DATE, 
        INDUSTRY_CATEGORY VARCHAR(100)
);
并插入此记录,下面执行的操作是插入脚本

INSERT INTO REVENUE (INDUSTRY_SURNAME, REVENUE, DATE, INDUSTRY_CATEGORY) VALUES 
('A' ,2000,'2020/01/01' ,'Agriculture'),
('B' ,4000,'2020/09/01','Industrial'),
('C',9900,'2020/05/01','Agriculture'),
('D',6000,'2020/09/01','Industrial'),
('A' ,2000,'2020/02/01','Agriculture'),
('B' ,3500,'2020/08/01','Industrial'),
('A' ,1000,'2020/05/01','Agriculture'),
('A' ,7000,'2020/08/01' ,'Agriculture'),
('A' ,5000,'2020/12/01','Agriculture');
我希望你会喜欢我的辛勤工作,并很高兴回答你的问题


如果我满足了您的要求,那么请跟我一起投票,我将非常高兴

请提供样本数据和期望的结果。也许db/SQL提琴会有所帮助。请阅读。特别是“在发布任何代码之前介绍问题”。您(当前)未显示您试图解决此问题的方法。请阅读。它提供了有关如何以表格形式显示信息的所有查找详细信息。另外,请在列表中添加标题。您应该创建Als,其中包括所需的输出。可能进一步的建议根本不会被注意。对不起,没有详细解释,谢谢您的回答,这对我很有帮助!这与您的预期完全相同,但如果我所寻找的是每个行业收入的前30%,例如,如果有100家农业公司,并且需要收入更高的前30家公司,那么该如何更改查询?您的要求我不清楚,请详细说明