sqltotal
1. sql语句查询今年单价总金额
年,季,月,周,天,小时
也就是说你要的是这个六个分别的金额与汇总。
按照从大到小,如果仅仅是按照现有的表来操作,那么个人觉得毫无疑问的要查6遍,每次汇总都是一遍,如果数据量大的话毫无疑问的卡死。
个人觉得可以先改造一下表,将时间字段分成这六个部分,然后分组的时候加上rollup,只要注意书写顺序,那么一次应该就可以了。这是我能想到的减小运算量的一个办法。
2. sql如何实现总计
算出总计行,使用unionall并起来就可以。但是这样会算多一遍,建议计算总数还是放在后台代码或者前端进行计算,这样才比较节省性能。
SELECT
a.BUFullName'公司',
a.ProjName'项目',
a.BldName'楼栋',
a.count_num'总套数',
a.total'总按揭金额',
b.count_num'未完成套数',
b.total'未办理金额'
FROM
(
SELECT
p2.BUFullName,
p1.ProjName,
p6.BldName,
count(p6.BldName)'count_num',
sum(p3.AjTotal)'total'
FROM
p_ProjectASp1
.BUGUID=p1.BUGUID
LEFTJOINs_SaleServiceASp4ONp4.ProjGUID=p1.p_Projectid
ANDp4.ServiceItemEnum='2'
RIGHTJOINs_ContractASp3ONp3.ContractGUID=p4.SaleGUID
ANDp3.StatusEnum='1'
INNERJOINs_RoomASp5ONp5.RoomGUID=p3.RoomGUID
INNERJOINs_BuildingASp6ONp6.BldGUID=p5.BldGUID
ANDp6.IsBld!='0'
WHERE
p1.p_Projectid=@projGUID
GROUPBY
p2.BUFullName,
p1.ProjName,
p6.BldName
)ASaleft
JOIN(
SELECT
j6.BldName,
count(j6.BldName)'count_num',
sum(j3.AjTotal)'total'
FROM
p_ProjectASj1
.BUGUID=j1.BUGUID
LEFTJOINs_SaleServiceASj4ONj4.ProjGUID=j1.p_Projectid
ANDj4.ServiceItemEnum='2'
ANDj4.ServiceProcCode='1'
RIGHTJOINs_ContractASj3ONj3.ContractGUID=j4.SaleGUID
ANDj3.StatusEnum='1'
INNERJOINs_RoomASj5ONj5.RoomGUID=j3.RoomGUID
INNERJOINs_BuildingASj6ONj6.BldGUID=j5.BldGUID
ANDj6.IsBld!='0'
WHERE
j1.p_Projectid=@projGUID
GROUPBY
j6.BldName,
j2.BUFullName,
j1.ProjName
)ASbONa.BldName=b.BldNameORDERBYa.BldName
unionALL
SELECT
'总计''公司',
'总计''项目',
'总计''楼栋',
sum(a.count_num)'总套数',
sum(a.total)'总按揭金额',
sum(b.count_num)'未完成套数',
sum(b.total)'未办理金额'
FROM
(
SELECT
p2.BUFullName,
p1.ProjName,
p6.BldName,
count(p6.BldName)'count_num',
sum(p3.AjTotal)'total'
FROM
p_ProjectASp1
.BUGUID=p1.BUGUID
LEFTJOINs_SaleServiceASp4ONp4.ProjGUID=p1.p_Projectid
ANDp4.ServiceItemEnum='2'
RIGHTJOINs_ContractASp3ONp3.ContractGUID=p4.SaleGUID
ANDp3.StatusEnum='1'
INNERJOINs_RoomASp5ONp5.RoomGUID=p3.RoomGUID
INNERJOINs_BuildingASp6ONp6.BldGUID=p5.BldGUID
ANDp6.IsBld!='0'
WHERE
p1.p_Projectid=@projGUID
GROUPBY
p2.BUFullName,
p1.ProjName,
p6.BldName
)ASaleft
JOIN(
SELECT
j6.BldName,
count(j6.BldName)'count_num',
sum(j3.AjTotal)'total'
FROM
p_ProjectASj1
.BUGUID=j1.BUGUID
LEFTJOINs_SaleServiceASj4ONj4.ProjGUID=j1.p_Projectid
ANDj4.ServiceItemEnum='2'
ANDj4.ServiceProcCode='1'
RIGHTJOINs_ContractASj3ONj3.ContractGUID=j4.SaleGUID
ANDj3.StatusEnum='1'
INNERJOINs_RoomASj5ONj5.RoomGUID=j3.RoomGUID
INNERJOINs_BuildingASj6ONj6.BldGUID=j5.BldGUID
ANDj6.IsBld!='0'
WHERE
j1.p_Projectid=@projGUID
GROUPBY
j6.BldName,
j2.BUFullName,
j1.ProjName
)ASbONa.BldName=b.BldName
3. 数据库sql total字段(523)除以100,取出来23出来这个sql怎么写
oracle
selectmod(523,100)fromal
mysql
selectmod(523,100)
sqlserver
select523%100
4. SQL查询每日的总数
select [date],sum(num) as total from 表 group by [date]
5. sql sum函数的用法
这个是返回的一个运算结果列,没有实际存储
6. PL/SQL中:total > max是什么意思,主要不知道前面的冒号是什么意思
:total是一个变量,PL/SQL里面,要定义一个变量,变量前面得有冒号。比如,声明一个int类型的变量a,declare :a int,如果是declare a int,则无法通过语法检查
7. sql中图书的库存量stock不能多于总藏书量total的check约束如何实现
将约束与字段分开
stock int not null,
check ((stock>=0)and(stock<=total)) default 0
8. sql查询同一id的数据总和
实现的方法和详细的操作步骤如下:
1、第一步,在桌面上,单击“
Management Studio”图标,如下图所示,然后进入下一步。
9. sql中有没有一个类似foxpro中total的汇总语句呢
没有
1 可在程序里循环累加某列;
2 可在程序里使用LINQ 语法计算汇总值;
3 在查询语句里就计算好汇总值,直接返回给程序(一般是用存储过程实现);
10. 如何用一条SQL查询Top15与其它的总和
--定义表变量
declare@mtmtable(idint,titlenvarchar(50),totalint)
--将查询到的前15条记录先存到表变量(临时表)里
insert@mtm(id,title,total)
selecttop15id,title,totalfromtable
--联合查询获取16条数据
selecttitle,totalfrom@mtm
unionall
select全部title,count(0)total
fromtableasa
[email protected]=b.id
whereb.idisnull
我看你用的是MySQL的语法,我不太熟,查询的大致思路就是这样的,只是定义临时表的语法应该是和mysql不太一样