你的日期格式应该是这样: 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语句 如何分组后得到记录总数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)