大数跨境
0
0

SQL 子查询基础应用

SQL 子查询基础应用 了不起的数据分析
2025-06-17
1
导读:SQL 子查询基础应用



宇宙不会辜负每一粒星辰的努力,你生来就是光的一部分。




数据源(数据表tb_salesnum):

use db_demo;create table tb_salesnum (	id int(11NULL,	`yearint(11NULL,	`monthint(11NULL,	salesnum decimal(10,2NULL)ENGINE=InnoDBDEFAULT CHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;
INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(120257100.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(220257200.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(32024756.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(452024778.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(582025588.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(62024588.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(92025590.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(72024596.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(320255978.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(22025588.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(52024390.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(42025396.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(120243200.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(6202511150.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(9202411100.00);INSERT INTO db_demo.tb_salesnum(id, `year`, `month`, salesnum)VALUES(5520251177.00);

select	idfrom(    select         id,        Sum(salesnum)    from tb_salesnum    group by id    order by Sum(salesnum) desc    limit 5) tb2_salesnum;
  • 把子查询的结果命名为tb2_salesnum,再在tb2_salesnum基础上进一步查询id号


desc tb_salesnum;


select id from tb_salesnum;
select 	id,	Sum(salesnum) as moneyfrom tb_salesnumgroup by id order by money desclimit 5;
select id from	(select 		id,		Sum(salesnum) as money        from tb_salesnum        group by id         order by money desc        limit 5        ) tb222;


两个数据表关联:


select 	tb333.id,	orderbydata.orderidfrom	(select id from		(select 			id,			Sum(salesnum) as money              from tb_salesnum              group by id               order by money desc              limit 5) tb222	) tb333inner join orderbydata on tb333.id=orderbydata.customerid;
  • 想要输出tb_salesnum中的id字段、一级orderbydata表中的orderid字段,注意在两次的子查询中,原本的tb_salesnum.id已经被子查询结果命名为tb333.id

  • 若写select tb_salesnum.id, orderbydata.orderid....将会报错,因为子查询的结果中,只有tb333.id




【声明】内容源于网络
0
0
了不起的数据分析
数据分析师成长笔记无私共享,超干货!
内容 270
粉丝 0
了不起的数据分析 数据分析师成长笔记无私共享,超干货!
总阅读280
粉丝0
内容270