| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1860 人关注过本帖
标题:我总觉得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
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9795
专家分:26886
注 册: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: 12Rank: 12Rank: 12
来 自:https://t.me/pump_upp
等 级:贵宾
威 望:67
帖 子:1541
专家分:3003
注 册: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
帖 子:601
专家分:1770
注 册:2017-7-16
收藏
得分:0 
VFP-SQL语句,好比语文中的文言文
VFP普通代码,好比语文中的白话文

VFP-SQL语句,一句包括了普通代码中的许多句,所以复杂一点十分正常。
2018-10-23 09:43
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:601
专家分:1770
注 册: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
快速回复:我总觉得sql语句太复杂了有人能简化一下吗?
数据加载中...
 
   



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

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