社区
C++ Builder
帖子详情
关于日期查询统计...oracle
hoofi
2001-05-29 09:43:00
问题1:
table1
姓名,出生日期,专业,email,爱好
现在要统计出各个专业里70-75年,75-80年,80-85年所有学生的人数
比如:
专业名称,70-75年人数,75-80年人数,80-85年人数
专业1 ,23, 34, 12
这个sql语句怎么写??
问题2:
怎么从上述表中的出生日期里面得到出生的年份??
比如:1980-02-16 得到 1980
这个查询如何实现>??
...全文
98
2
打赏
收藏
关于日期查询统计...oracle
问题1: table1 姓名,出生日期,专业,email,爱好 现在要统计出各个专业里70-75年,75-80年,80-85年所有学生的人数 比如: 专业名称,70-75年人数,75-80年人数,80-85年人数 专业1 ,23, 34, 12 这个sql语句怎么写?? 问题2: 怎么从上述表中的出生日期里面得到出生的年份?? 比如:1980-02-16 得到 1980 这个查询如何实现>??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
夭夭
2001-05-29
打赏
举报
回复
拷多了,不好意思,!:))
夭夭
2001-05-29
打赏
举报
回复
DATEPART(mm,site_entrydate) ‘Month Posted’ FROM site_directory
函数DATEPART()的参数是两个变量。第一个变量指定要抽取日期的哪一部分;第二个变量是实际的数据。在这个例子中,函数DATEPART()抽取月份,因为mm代表月份。下面是这个SELECT 语句的输出结果:
Site Name Month Posted
………………………………………………………………
Yahoo 2
Microsoft 5
Magicw3 5
(3 row(s) affected)
Month Posted列显示了每个站点被查询的月份。函数DATEPART()的返回值是一个整数。你可以用这个函数抽取日期的各个不同部分,如表11.2所示。
SELECT * FROM weblog
WHERE entrydate>=”12/25/2000” AND entrydate<”12/26/2000”
函数COUNT()也许是最有用的集合函数。你可以用这个函数来统计一个表中有多少条记录。这里有一个例子:
SELECT COUNT(au_lname) FROM authors
这个例子计算表authors中名字(last name)的数目。如果相同的名字出现了不止一次,该名字将会被计算多次。如果你想知道名字为某个特定值的作者有多少个,你可以使用WHERE子句,如下例所示:
SELECT COUNT(au_lname) FROM authors WHERE au_lname=’Ringer’
这个例子返回名字为’Ringer’的作者的数目。如果这个名字在表authors中出现了两次,则次函数的返回值是2。
假如你想知道有不同名字的作者的数目。你可以通过使用关键字DISTINCT来得到该数目。如下例所示:
SELECT COUNT(DISTINCT au_lname) FROM authors
如果名字’Ringer’出现了不止一次,它将只被计算一次。关键字DISTINCT 决定了只有互不相同的值才被计算。
通常,当你使用COUNT()时,字段中的空值将被忽略。一般来说,这正是你所希望的。但是,如果你仅仅想知道表中记录的数目,那么你需要计算表中所有的记录─不管它是否包含空值。下面是一个如何做到这一点的例子:
SELECT COUNT(*) FROM authors
注意函数COUNT()没有指定任何字段。这个语句计算表中所有记录所数目,包括有空值的记录。因此,你不需要指定要被计算的特定字段。
函数COUNT()在很多不同情况下是有用的。例如,假设有一个表保存了对你站点的质量进行民意调查的结果。这个表有一个名为vote的字段,该字段的值要么是0,要么是1。0表示反对票,1表示赞成票。要确定赞成票的数量,你可以所有下面的SELECT 语句:
SELECT COUNT(vote) FROM opinion_table WHERE vote=1
计算字段的平均值
使用函数COUNT(),你可以统计一个字段中有多少个值。但有时你需要计算这些值的平均值。使用函数AVG(),你可以返回一个字段中所有值的平均值。
假如你对你的站点进行一次较为复杂的民意调查。访问者可以在1到10之间投票,表示他们喜欢你站点的程度。你把投票结果保存在名为vote的INT型字段中。要计算你的用户投票的平均值,你需要使用函数AVG():
SELECT AVG(vote) FROM opinion
这个SELECT语句的返回值代表用户对你站点的平均喜欢程度。函数AVG()只能对数值型字段使用。这个函数在计算平均值时也忽略空值。
计算字段值的和
假设你的站点被用来出售卡片,已经运行了两个月,是该计算赚了多少钱的时候了。假设有一个名为orders的表用来记录所有访问者的定购信息。要计算所有定购量的总和,你可以使用函数SUM():
SELECT SUM(purchase_amount) FROM orders
函数SUM()的返回值代表字段purchase_amount中所有值的平均值。字段purchase_amount的数据类型也许是MONEY型,但你也可以对其它数值型字段使用函数SUM()。
返回最大值或最小值
再一次假设你有一个表用来保存对你的站点进行民意调查的结果。访问者可以选择从1到10 的值来表示他们对你站点的评价。如果你想知道访问者对你站点的最高评价,你可以使用如下的语句:
SELECT MAX(vote) FROM opinion
你也许希望有人对你的站点给予了很高的评价。通过函数MAX(),你可以知道一个数值型字段的所有值中的最大值。如果有人对你的站点投了数字10,函数MAX()将返回该值。
另一方面,假如你想知道访问者对你站点的的最低评价,你可以使用函数MIN(),如下例所示:
SELECT MIN(vote) FROM opinion
函数MIN()返回一个字段的所有值中的最小值。如果字段是空的,函数MIN()返回空值。
其它常用的SQL表达式,函数,和过程
这一节将介绍一些其它的SQL技术。你将学习如何从表中取出数据,其某个字段的值处在一定的范围,你还将学习如何把字段值从一种类型转换成另一种类型,如何操作字符串和日期时间数据。最后,你将学会一个发送邮件的简单方法。
通过匹配一定范围的值来取出数据
假设你有一个表用来保存对你的站点进行民意调查的结果。现在你想向所有对你的站点的评价在7到10之间的访问者发送书面的感谢信。要得到这些人的名字,你可以使用如下的SELECT 语句:
SELECT username FROM opinion WHERE vote>6 and vote<11
这个SELECT 语句会实现你的要求。你使用下面的SELECT 语句也可以得到同样的结果:
SELECT username FROM opinion WHERE vote BETWEEN 7 AND 10
这个SELECT 语句与上一个语句是等价的。使用哪一种语句是编程风格的问题,但你会发现使用表达式BETWEEN 的语句更易读。
现在假设你只想取出对你的站点投了1或者10的访问者的名字。要从表opinion中取出这些名字,你可以使用如下的SELECT 语句:
SELECT username FROM opinion WHERE vote=1 or vote
这个SELECT语句会返回正确的结果,没有理由不使用它。但是,存在一种等价的方式。使用如下的SELECT可以得到相同的结果:
SELECT username FROM opinion WHERE vote IN (1,10)
注意表达式IN 的使用。这个SELECT 语句只取出vote的值等于括号中的值之一的记录。
你也可以使用IN来匹配字符数据。例如,假设你只想取出Bill Gates或President Clinton的投票值。你可以使用如下的SELECT 语句:
SELECT vote FROM opinion WHERE username IN (‘Bill Gates’,’President Clinton’)
最后,你可以在使用BETWEEN或IN的同时使用表达式NOT。例如,要取出那些投票值不在7到10之间的人的名字,你可以使用如下的SELECT 语句:
SELECT username FROM opinion WHERE vote NOT BETWEEN 7 and 10
要选取那些某个字段的值不在一列值之中的记录,你可以同时使用NOT 和IN,如下例所示:
SELECT vote FROM opinion
WHERE username NOT IN (‘Bill Gates’,’President Clinton’)
你不是必须在SQL语句中使用BETWEEN或IN,但是,要使你的查询更接近自然语言,这两个表达式是有帮助的。
转换数据
SQL Sever足够强大,可以在需要的时候把大部分数值从一种类型转换为另一种类型。例如,要比较SMALLINT型和INT型数据的大小,你不需要进行显式的类型转换。SQL Sever会为你完成这项工作。但是,当你想在字符型数据和其它类型的数据之间进行转换时,你的确需要自己进行转换操作。例如,假设你想从一个MONEY型字段中取出所有的值,并在结果后面加上字符串“US Dollars”。你需要使用函数CONVERT(),如下例所示:
SELECT CONVERT(CHAR(8),price)+’US Dollars’ FROM orders
函数CONVERT()带有两个变量。第一个变量指定了数据类型和长度。第二个变量指定了要进行转换的字段。在这个例子中,字段price被转换成长度为8个字符的CHAR型字段。字段price要被转换成字符型,才可以在它后面连接上字符串’US Dollars’。
当向BIT型,DATETIME型,INT型,或者NUMERIC型字段添加字符串时,你需要进行同样的转换操作。例如,下面的语句在一个SELECT语句的查询结果中加入字符串’The vote is’,该SELECT语句返回一个BIT型字段的值:
SELECT ‘The vote is’+CONVERT(CHAR(1),vote) FROM opinion
oracle
连续月份列表,
Oracle
实现
查询
2个
日期
所跨过的月份列表/
日期
列表的方法分析...
Oracle
实现
查询
2个
日期
所跨过的月份列表/
日期
列表的方法分析本文实例讲述了
Oracle
实现
查询
2个
日期
所跨过的月份列表/
日期
列表的方法。分享给大家供大家参考,具体如下:1.基本逻辑公式:Select Rownum, 开始
日期
+...
oracle
有关
日期
统计
语句
Oracle
日期
统计
Oracle
统计
日期
,
Oracle
按
日期
统计
--创建表 TestCTEATE TABLE TEST(ID NUMBER NOT NULL,MODIFIEDTIME DATE NOT NULL)--按天
统计
SELECT TO_CHAR(T.MODIFIEDTIME,'YYYY-MM-DD') TIME,COUNT(*) COUNTFROM TEST T --这里可加
查询
条件WHERE TO_CHAR(T....
Oracle
按
日期
分组
统计
数据
昨天项目突然改了个需求,要求折线图的数据显示,必须按照月三天,季度九天来分组
统计
数据,网上搜索了一堆,差点没找着相关的!还好找到了类似的,现整理下提供给有需要的大家参考参考! (本人是在
Oracle
数据库的环境下) 1....
Oracle
按指定
日期
、按截止
日期
、分组
统计
sql
Oracle
按指定
日期
、按截止
日期
、分组
统计
sql
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章