如何利用sql查询一段时间内每天、没人的销售总额?我要详细的sql语句,我可以把表贴出来,求大神指导!!
select name '姓名',sum(yeji) '总业绩' from Table_1 where dat between '2011-6-22' and '2011-6-30' group by name
如果是05版本以上,可以使用pivot转置函数实现,例子如下:
pivot 用法:
select sid, [1] as [database], [2] as [CSharp], [3] as [Xml]
from ( select sid, cid, mark from tbl_marks) t pivot
(
sum( mark )
for cid in ( [1], [2], [3] )
) as pvt
然后你要有一张姓名表也是全集 name
然后你要根据这两张表查出时间和姓名的全集 (select time.time,name.name from time,name)
先有的这张表查询出销量:(select time,name sum(sale) as zs from test group by time,name )
然后将查出的两张表进行关联就可以查出来了
总SQL应该为: select a.*,nvl(zs,0) zs from (select time.time,name.name from time,name)a,(select time,name sum(sale) as zs from test group by time,name ) b where a.time=b.time(+) and a.name=b.name(+) order by a.time
--查询时间段的数据
with tmp as
(select *
from test
where time >= '2015-06-01'
and time <= '2015-06-10'),
--数据稠化,构建查询时间段的时间序列
tmp1 as
(select CONVERT(varchar(10), dateadd(day, t1.number, '2015-06-01'), 23) as time
from master .. spt_values t1
where type = 'P'
AND number <= DATEDIFF(day, '2015-06-01', '2015-06-10'))
--报表字段实现,通过分组sum+case实现聚合和行转列
select ROW_NUMBER() over(order by a.time) as id,
a.time as 日期,
SUM(case
when b.name = '小王' then
b.sale
else
0
end) as 小王,
SUM(case
when b.name = '小李' then
b.sale
else
0
end) as 小李,
SUM(case
when b.name = '小宋' then
b.sale
else
0
end) as 小宋
from tmp1 a
left join tmp b
on a.time = b.time
group by a.time
先建一个表time_test,里面二个字段id和time,就是你要查询的那个格式,这个好弄吧?自己弄
数据量不大用左连接就搞定啦,当然如果大规模表左连接速度就有点慢了,代码如下
select ti.id,ti.time,
th1.sale1 as 小王销量,
th2.sale2 as 小李销量,
th3.sale3 as 小宋销量
from ((time_test ti
left join
(select name,time,
sum(sale) as sale1
from think_test
where name="小王"
group by time) th1
on ti.time=th1.time)
left join
(select name,time,
sum(sale) as sale2
from think_test
where name="小李"
group by time) th2
on ti.time=th2.time)
left join
(select name,time,
sum(sale) as sale3
from think_test
where name="小宋"
group by time) th3
on ti.time=th3.time
order by ti.id
CREATE TABLE #t
( id INT IDENTITY(1,1),
tdate DATE,
NAME varchar(20),
sales INT
)
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-01','A',10);
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-01','b',20);
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-01','c',30);
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-02','A',20);
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-02','b',30);
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-02','c',40);
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-03','A',40);
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-03','b',50);
INSERT INTO #t (tdate,NAME,sales) VALUES ('2015-05-03','c',60);
SELECT tdate,SUM(CASE WHEN name ='A' THEN sales END ) AS a,
SUM(CASE WHEN name ='B' THEN sales END ) AS B,
SUM(CASE WHEN name ='C' THEN sales END ) AS C
FROM #t GROUP BY tdate
DROP TABLE #t
首先建立一张日期表dt_date,
select
date,
(select sum(sale) from thint_test where time = t.date and name = '小王') as '小王销量',
(select sum(sale) from thint_test where time = t.date and name = '小李') as '小李销量',
(select sum(sale) from thint_test where time = t.date and name = '小宋) as '小宋销量'
from dt_date t
使用智能代理扩展数据库应用程序
使用数据库客户端和数据库服务器之间的连接作为利用点。顾名思义,智能数据库代理位于数据库客户端和数据库服务器(SQL或NoSQL)之间。它可以观察和修改客户端和服务器之间的网络流量,而不必对任何一端进行任何更改,因为代理在网络协议级别工作。代理的"智能"部分是它可以对此流量执行自定义逻辑,使您...
数据仓库与操作数据库有何联系和区别?
数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋 补充一下,数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。为了更好地为前端应用服务,数据仓库必须有如下...
tempdb对SQL Server数据库性能有何影响
3.1最小化的使用tempdb SQL Server中很多的活动都活发生在tempdb中,所以在某种情况可以减少多对tempdb的过度使用,以提高SQL Server的整体性能.如下有几处用到tempdb的地方:(1)用户建立的临时表.如果能够避免不用,就尽量避免. 如果使用临时表储存大量的数据且频繁访问,考虑添加index以增加查询效率.(2)...
数据库的数据检索和 搜索引擎的信息检索的不同点是什么?需要解决的核 ...
互联网的发展明显地促进了信息检索技术的发展和应用,一大批搜索引擎产品诞生,为网民提供了很好的快速信息获取和网络信息导航工具,但是将信息检索等同于使用搜索引擎就陷入了误区。搜索引擎技术中也普遍采用了全文信息检索技术,但互联网信息搜索和企业信息搜索是不同的。一是数据量。传统信息检索系统一般索引库规模多在GB...
1.利用搜索引警收集次级资料有何技巧?
三、在规定平台搜索在网络上传不同的资料时,会存在不同的站点上或是搜索引擎上,搜索引擎平台收录信息的规则也会有所不同。若是想快速找到资料,可以在之前上传资料的平台或搜索引擎平台去查询,这样会更准确查到。若是不能快速找可能是如下现象:一、未收录在各个站点、搜索引擎提交信息时,未得到相关...
oracle一张上千万记录的数据表需要改为分区表,用什么方法好?
适用于包含大数据量的表转到分区表中的一个分区的操作。应尽量在闲时进行操作。 方法三:Oracle9i以上版本,利用在线重定义功能 步骤: SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE); 表已创建。 SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS; 已创建6264行。 SQL> COMMIT; 提交...
...有几种方法?分别是什么,谁能具体说一下每一种方法。(注:不使用...
是用==还是equals()? 它们有何区别?答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。51.数组有没有length()这个方法? String有没...
何洋在那里?
查找网络安全与防火墙的相关知识,关键词可以是___?(2分)3、要在网上找到并下载“迅雷”软件,最好使用的搜索关键词是___?(1分)四、查找“共享软件”、“免费软件”、“自由软件”的区别是什么?(8分)答:(1)共享软件指的是: (2)“免费软件”指的是: (3)“自由软件”指的是:。 已赞过 已踩过< 你...
MongoDB是什么,怎么用?看完你就知道了
MongoDB的主要客户端是可以交互的js shell 通过mongo启动,使用js shell能使用js直接与MongoDB进行交流,像使用sql语句查询mysql数据一样使用js语法查询MongoDB的数据,另外还提供了各种语言的驱动包,方便各种语言的接入。 mongodump和mongorestore,备份和恢复数据库的标准工具。输出BSON格式,迁移数据库。 mongoexport和mongo...
一个完整的数据库包含哪些数据库文件,其中哪些是在一个数据库中必须存在...
分为“主要文件,次要文件,事物日志文件”,其中“主要文件和事物日志文件”是必须存在的。
杭版曲克: select * from table where date>=to_date(new Date(),'yyyy-mm-dd hh24:ss')and dateand time>to_date(new Date(),'yyyy-mm-dd hh24:ss')and timedate代表日期time代表时间 new Date() 代表的是时间段(你自己自定义的时间)唔 不一定可以 思路是这样没错的
达日县13814611752: 如何利用sql查询一段时间内每天、没人的销售总额?我要详细的sql语句,我可以把表贴出来,求大神指导!! - ?
杭版曲克: --查询时间段的数据 with tmp as (select * from test where time >= '2015-06-01' and time --数据稠化,构建查询时间段的时间序列 tmp1 as (select CONVERT(varchar(10), dateadd(day, t1.number, '2015-06-01'), 23) as time from master .. spt_values t...
达日县13814611752: SQL查询某段时间段中每一天的数据条数 - ?
杭版曲克: select sum(1) as 数据数,convret(varchar(10),日期,112) as 日期 from 表 where日期 between 开始日期 and 结束日期 group by convret(varchar(10),日期,112)
达日县13814611752: 在数据库中查询一段时间内的数据,SQL语句怎么写 - ?
杭版曲克: 例:查询table表中,时间(time)在2016年5月1日之后的数据: select * from table where to_char(time,'yyyy-mm-dd')>'2016-05-01'; 注:to_char()函数适用于orcle数据库,如果你用的是mysql数据库,把to_char()替换成date_format()即可.
达日县13814611752: sql题 如何统计查询一个月中每天的记录 - ?
杭版曲克: select count(*),substr(t.date,1,10) from table t where t.date like '2010-03%' group by substr(t.date,1,10)这里date的格式是YYYY-mm-dd hh:mm:ss
达日县13814611752: 请教下 如何sql下查询一段时间内每天的访问量 用纯select写 - ?
杭版曲克: select COUNT(*),convert(date,max(日期)) from 表 group by convert(date,日期) union all select * from(select 0 co,convert(varchar(10),dateadd(dd,number,convert(varchar(8),getdate(),120)+'01'),120) as dt from master..spt_values where type='P' and...
达日县13814611752: Sqlsever 怎么查一段时间内的每天最早开始时间和最晚结束时间差? - ?
杭版曲克: select id,max(sjc) from (select id,start-end as sjc from table where start >=???? and end
达日县13814611752: 怎么查询一段时间内的数据,SQL语句怎么查询 - ?
杭版曲克: SELECT * FROM module_p WHERE to_char(create_time, 'yyyy/MM/dd') BETWEEN '2015/07/22' AND '2015/07/30'; to_char是格式化函数,将日期转成指定的格式才可以做between and计算
达日县13814611752: sql 按时间分类查询数据,比如:按一天时间段分类查询访问次数?查询语句怎么写?举个例子 - ?
杭版曲克: 如果你的时间段是均匀的,比如一天24小时内,每4个小时为一个周期,那么可以这么写 select coutn(ID) from T group by trunc (to_char(time,'hh24') / 4) --to_char(time,'hh24')是取出小时部分,trunc是求商,把小时部分除以4,则每4个小时内的都会在一起 如果时间段不均匀,那么只能每个时间段单独写了 示例 select count(ID) from T where to_char(time,'hh24')<结束时间 and to_char(time,'hh24') >=开始时间
达日县13814611752: SQL中查询一个月每天的数据,(以早八点到晚八点为一天),怎么查啊 - ?
杭版曲克: 两种方法 1. 将数据库中时间字段 - 8小时 后取日期比较 2. 用 日期字段 >= (查询日期- 8H )and 日期字段 >= (查询日期+1D- 8H) 以上是思路,建议采取第二种,具体方法自己实践