SQL数据库中对数据进行汇总统计后的数据进行新的汇总查询语句怎么写

SQL数据库中对数据进行汇总统计后的数据进行新的汇总查询语句怎么写,第1张

一看IMSI就知道是搞网优的苦/逼

1我用oracle写的,语法大致差不多,试试吧。

2IMSI我记得好像是字符型的,但是连接时长那个我不记得是什么类型了,我当成字符型来写的。

3你中间说对IMSI进行统计,并对连接时长求和,后面又说对IMSI出现数量计数,并对IMSI时长继续汇总??

我的理解你是要统计有哪些IMSI,然后这些IMSI分别出现了多少次,连接时长总和多少,是这样吗?把之前的SQL稍微改了下。

连接时长我用connect_time代替了,假设连接时长类型是字符型的,我直接转成to_number,如果你倒出来的表里面连接时长是时间类型的话,把sum()里面的内容换成to_number(to_char(connect_time))

select IMSI,count(IMSI),sum(to_number(connect_time)) from table_a

group by IMSI

having count(IMSI) between 1 and 10

主要原因是因为你时间字段是字符串

所以要进行几个转换

给你写了下

select  from 表名 where datediff(week,cast(substring(时间,1,charindex(' 星',(时间))-1) as datetime),getdate()) =0

直接复制,运行,表名换一下就行

select from

(select from tablename order by createdate desc) aaa -- 按创建时间倒排序

where rownum <= 5000;

使用“order by  字段名 desc ”对日期字段进行倒序排序即可。

sql语法:select  from 表名 order by 日期字段名 desc

其中,排序的时候order by 后面跟着需要进行排序的字段名,排序可以有两种,默认是asc升序(在sql中可以不写),如果希望降序排列的话,可以使用desc。如你想要最近的日期的话就只需要降序即可。

举例:如tpl_purchase_order 是我的订单表,该表有一个字段创建日期(字段名:CREDATE)是日期类型,希望通过sql实现按照按照创建日期由近到远的顺序排列。

对应sql: select from  tpl_purchase_order order by  credate desc;

sql执行后输出结果为:

扩展资料:

我们可以通过一些实例来具体分析排序order by 子句的用法:

假设有Orders 表如下:

1、实例 1

以字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

结果如下:

2、实例 2

以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

结果如下:

3、实例 3

以逆字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

结果如下:

4、实例 4

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

结果如下:

注意:在以上的结果中有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。

一、数据准备

以Microsoft SQL Server数据库管理系统为例。

假设对应的数据表名称为TestTable,表结构如下所示:

CREATE TABLE TestTable

(

[品牌] VARCHAR(20),

[版本号] INT,

[颜色] VARCHAR(10)

)

添加样例数据的SQL代码如下:

INSERT INTO TestTable VALUES('三星', 1, '黑')

INSERT INTO TestTable VALUES('三星', 1, '白')

INSERT INTO TestTable VALUES('三星', 1, '灰')

INSERT INTO TestTable VALUES('三星', 1, '蓝')

INSERT INTO TestTable VALUES('三星', 1, '红')

INSERT INTO TestTable VALUES('苹果', 1, '黑')

INSERT INTO TestTable VALUES('苹果', 1, '白')

INSERT INTO TestTable VALUES('HTC', 1, '黑')

INSERT INTO TestTable VALUES('HTC', 1, '白')

INSERT INTO TestTable VALUES('HTC', 1, '灰')

INSERT INTO TestTable VALUES('HTC', 1, '蓝')

INSERT INTO TestTable VALUES('HTC', 1, '红')

INSERT INTO TestTable VALUES('三星', 2, '黑')

INSERT INTO TestTable VALUES('三星', 2, '白')

INSERT INTO TestTable VALUES('HTC', 2, '黑')

INSERT INTO TestTable VALUES('HTC', 2, '白')

INSERT INTO TestTable VALUES('HTC', 3, '黑')

INSERT INTO TestTable VALUES('HTC', 3, '白')

INSERT INTO TestTable VALUES('HTC', 3, '灰')

INSERT INTO TestTable VALUES('HTC', 3, '蓝')

INSERT INTO TestTable VALUES('HTC', 3, '红')

二、思路

查询所有数据行,对结果集按“品牌”分组,比较分组后的每行的版本号是否是同一品牌的最新版本号,若不是则从结果集中剔除。

GROUP BY    分组列

HAVING      分组后的条件子句

三、实现步骤

完整的SQL代码如下:

SELECT t1[品牌], t1[版本号], t1[颜色]

FROM TestTable t1

GROUP BY t1[品牌], t1[版本号], t1[颜色]

HAVING t1[版本号] = ( SELECT MAX(t2[版本号])

FROM TestTable t2

WHERE t1[品牌] = t2[品牌])

四、运行测试

运行结果:

品牌                   版本号         颜色

-------------------- ----------- ----------

苹果                   1           白

苹果                   1           黑

三星                   2           白

三星                   2           黑

HTC                  3           白

HTC                  3           黑

HTC                  3           红

HTC                  3           灰

HTC                  3           蓝

(9 行受影响)

以上就是关于SQL数据库中对数据进行汇总统计后的数据进行新的汇总查询语句怎么写全部的内容,包括:SQL数据库中对数据进行汇总统计后的数据进行新的汇总查询语句怎么写、sql数据库查询本周数据、求助sql 查询数据库最新的5000条数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9792564.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存