sql语句按照日期分组怎么写

sql语句按照日期分组怎么写,第1张

你的日期格式应该是这样: 2012-01-12 00:00:00

你可以把 2012-01-12 截取出来,这样就是按每天分组了

select from xxxx group by SUBSTRING(column_name,1,10) ---这里的column_name是你的字段名称

以上是mysql数据库的,其他数据库的也类似

您的回答会被数十乃至数万的网友学习和参考,所以请一定对自己的回答负责,尽可能保障您的回答准确、详细和有效表1(已有数据)——进货表name, buycount

apple 1200

banana 200

表2(已有数据) ——订单

name, needdate, needcount

apple 2000-1-1 200

apple 2000-1-2 300

banana 2000-1-1 300

banana 2000-1-2 500

banana 2000-1-3 400

表3(当前数据)——订单需求余量表

name needdate, havecount, needcount

apple 2000-1-1 50 150

banana null 200 0 (needdate为null表明上次有结余)

要求:

每次采购后,用SQL语句根据订单需求表将数据冲入订单需求余量表。

冲入标准:

先将每种水果冲入日期早的订单,订单充满后再冲入下一日期的订单,依此循环

如果购买数大于所有订单总需求,那么表明购买多了,多的数冲入余量表后needdate为null表明为上次购买结余,下次购买水果后可使用该数量继续冲订单。

SQL执行后表3结果如下:

表3(冲数结果)

name needdate, havecount, needcount

apple 2000-1-1 200 0

apple 2000-1-2 300 0

apple null 700 0 --购买1200,冲入第一单200,第二单300,结余700

banana 2000-1-1 300 0 --上次结余200+本次购买200冲入第一单300,第二单100

banana 2000-1-2 100 400

banana 2000-1-3 0 400结果表写错了,apple应该结余750

SQL执行后表3结果如下:

表3(冲数结果)

name needdate, havecount, needcount

apple 2000-1-1 200 0

apple 2000-1-2 300 0

apple null 750 0 --购买1200,冲入第一单150(原来已经存在50),第二单300,结余750

banana 2000-1-1 300 0 --上次结余200+本次购买200冲入第一单300,第二单100

banana 2000-1-2 100 400

banana 2000-1-3 0 400可以自定义

SELECT COUNT()

FROM (SELECT 分组字段 FROM 表

GROUP BY 分组字段

)别名

或者

SELECT COUNT()

FROM (SELECT distinct 分组字段 FROM 表)别名

扩展资料:

SQL分组查询

在SQL Server中使用的分组查询是ORDER BY子句,使用ORDER BY子句要同聚合函数配合使用才能完成分组查询,在SELECT查询的字段中如果字段没有使用聚合函数就必须出现在ORDER BY子句中(即SELECT后边的字段名要么出现在聚合函数中,要么在ORDER BY子句中使用)

在分组查询中还可以配合使用HAVING子句,定义查询条件。

使用group by进行分组查询

在使用group by关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项:

1、被分组的列

2、为每个分组返回一个值得表达式,例如用一个列名作为参数的聚合函数

3、group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

select from sxh where kicket_n in (select kicket_n from sxh group by kicket_n having count()>1)

and czy in (select czy from sxh group by czy having count()>1)

class classid classname

product classid proname num

select top 10 cclassid ,cclassname,sum(pnum) from class c,product p where pclassid=cclassid group by cclassid order by sum(pnum) desc

有的不能用top。,不同数据库软件查询好像有细微的差别。

sql多条件分组查询举例:

比如有两张表:

表一:

姓名 分数

——————

李一 2

李二 1

李三 1

张一 3

张二 2

张三 2

……

表二:

——

要查询表二中的姓的数据对表一进行分组,然后将分数统计出来。

sql语句写法如下:

SELECT

b NAME,

sum(ascore) AS 分数

FROM

tb1 a

LEFT JOIN tb2 b ON SUBSTR(aname FROM 1 FOR 1)= b`name`

GROUP BY

b NAME;

这个是Mysql的写法 Oracle把SubStr函数改一下就可以了。

似乎上面这几个答案都不能满足要求。我自己也没与想出来该怎么查询。

可是我觉得既然你已经说了票是不能重复的,也就是说它的值应该是unique或者说它是primary key。为什么在设置的时候不能设为主键呢?

票和 *** 作员是1:M的关系,另外票和金额也是1:M的关系, *** 作员和金额是N:M的关系。你可以将(ticket_n,rmb)设为主键,这样一个元组就能由这两个属性来决定,就会得到你想要的结果

ticket_n czy rmb

01 001 50

01 001 100

01 001 80

01 002 30

01 002 20

(其实还是有点不懂你对题目所设的要求,具体可以给我发信息,百度hi一下)

以上就是关于sql语句按照日期分组怎么写全部的内容,包括:sql语句按照日期分组怎么写、SQL 分组语句求解:、sql语句 如何分组后得到记录总数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存