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不太一樣