标题:我总觉得sql语句太复杂了有人能简化一下吗?
只看楼主
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
结帖率:82%
已结贴  问题点数:20 回复次数:4 
我总觉得sql语句太复杂了有人能简化一下吗?
SELECT 班级1 as 班级,普通人数,IIF(ISNULL(艺体人数),0,艺体人数) 艺体人数,(普通人数+IIF(ISNULL(艺体人数),0,艺体人数)) 合计  FROM (SELECT 班级 班级1,COUNT(1) 普通人数 FROM bmb WHERE 科类 ='外语(文)'or 科类 ='外语(理)' GROUP BY 班级) as a left join (SELECT 班级 班级2 ,COUNT(1) 艺体人数 FROM bmb WHERE 科类 <>'外语(文)'and 科类 <>'外语(理)' GROUP BY 班级) as b ON  班级1=班级2


要求统计各班艺体(艺术和体育)和非艺体人数
bmb.zip (1.54 KB)
,谢谢版主

[此贴子已经被作者于2018-10-22 21:09编辑过]

搜索更多相关主题的帖子: sql 语句 SELECT FROM WHERE 
2018-10-22 16:40
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:20 
SELECT 班级,;
    SUM(IIF(LEFT(科类,4) = "艺术" OR LEFT(科类, 4) = "体育", 1, 0)) 艺体,;
    COUNT(*) - SUM(IIF(LEFT(科类,4) = "艺术" OR LEFT(科类, 4) = "体育", 1, 0)) 非艺体 ;
    FROM Bmb GROUP BY 班级

坚守VFP最后的阵地
2018-10-22 18:46
schtg
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1355
专家分:2534
注 册:2012-2-29
得分:0 
@sdta,高,学习啦!
SELECT 班级,SUM(IIF(LEFT(科类,4) = "艺术" OR LEFT(科类, 4) = "体育", 1, 0)) as 艺体,;
            SUM(IIF(LEFT(科类,4) <>"艺术" AND LEFT(科类, 4) <> "体育", 1, 0)) as 非艺体,;
            COUNT(*) as 总人数 ;
            FROM Bmb GROUP BY 班级
2018-10-23 07:29
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:0 
VFP-SQL语句,好比语文中的文言文
VFP普通代码,好比语文中的白话文

VFP-SQL语句,一句包括了普通代码中的许多句,所以复杂一点十分正常。
2018-10-23 09:43
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:0 
SET SAFETY OFF
CREATE TABLE  tatlea(班级 C(12),普通人数 N(4,0),艺体人数 N(4,0),合计 N(5,0))
USE bmb
DIMENSION bjs(1,1)
SELECT 班级 DISTINCT FROM bmb INTO array bjs ORDER BY 班级
n=ALEN(bjs)
DIMENSION bjs0(n+1,1)
ACOPY(bjs,bjs0)
bjs0(n+1,1)="∑"
SELECT bmb
FOR i=1 TO n+1
IF i<n+1
SET FILTER TO 班级=bjs0(i)
ELSE
SET FILTER TO
ENDIF
COUNT TO x1
COUNT TO X2 FOR "艺术"$科类  OR "体育"$科类
INSERT INTO tatlea values(bjs0(i),x1-x2,x2,x1)
ENDFOR
SELECT tatlea
GO top
BROWSE FONT  "宋体",12
CLOSE TABLES all
2018-10-23 10:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490598-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.204710 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved