筆者在開發的過程中遇到了這樣的問題。
其中item_id是固定的字典。值是死的。
其中item_id 等於 1,2,3的值是每乙個work_quoted_id都需要相乘的。
相當於乙份訂單人工費和施工人數以及施工天數都是一定存在的並且是相乘的關係。
其他的item_id的值是需要相加的。
所以,運算的規則是
item1、item2、item3的quantity值是要相乘的。在加上item4、item5、item6的quantity值。
所以上述期望的值應該是670
mysql 提供了sum求和函式。但是沒有提供相乘的函式。
但還是有辦法做的。筆者這裡採用了列傳行的辦法進行統計資料。 sql如上
select target.workdays * target.workfee * target.workdays
from (select
max(case item_id when
'1'then quantity end ) as workfee,
max(case item_id when
'2'then quantity end ) as workernumber,
max(case item_id when
'3'then quantity end ) as workdays
from order_worker_quote_detail where work_quote_id=1) as target;
我們可以拿到執行結果
在這裡讀者可能不是很明白。
其實關鍵在於 case when then
max(case item_id when '2'
then quantity end ) as workernumber,
這裡筆者可以給出乙個demo
drop
table
ifexists
`tabname`;
create
table
`tabname` (
`id`
int(11) not
null auto_increment,
`name`
varchar(20) default
null,
`date`
date
default
null,
`scount`
int(11) default
null,
primary
key (`id`)
) engine=innodb auto_increment=9
default charset=utf8;
insert
into
`tabname`
values ('1', '**', '2013-09-01', '10000');
insert
into
`tabname`
insert
into
`tabname`
values ('3', '**', '2013-09-02', '30000');
insert
into
`tabname`
insert
into
`tabname`
values ('5', '**', '2013-09-03', '31000');
insert
into
`tabname`
insert
into
`tabname`
values ('7', '**', '2013-09-04', '35000');
insert
into
`tabname`##
select
date ,
max(case name when
'**'
then scount else
0end ) **,
max(case name when
then scount else
0from tabname
group
bydate
可以得到執行結果
demo參考自:
統計mysql一列行數 統計資料行數
select count from 語法用於從資料表中統計資料行數。語法 select count column from tb name 該 sql 語法用於統計某一字段的資料行數,count 內不能是多個字段,但可以是 號。例子 conn mysql connect localhost root...
mysql按周統計資料
主要就是使用date format這個方法 select date format createtime,y u weeks,count count from user group by weeks order by weeks desc u 周 00 53 星期日是一周的第一天 u 周 00 53 ...
分組統計資料
with a as select convert varchar 10 starttime,120 starttime,case when organid like 0226 then else 非 end as deptname,sum case when billableseconds 0 th...