需求:一種商品每天**在變化,根據每天銷售額和每天的單價得到當天的銷售數量,每天銷售總額為:貨款 - 退款(使用type欄位標明:0---貨款,1---退款)
問題:每天不一定有退款,就會導致銷售總額的計算中會出現空值。
解決:使用ifnull函式來做處理。
表:
建表語句:
set foreign_key_checks=0;
-- ----------------------------
-- table structure for product
-- ----------------------------
drop table if exists `product`;
create table `product` (
`id` int(11) not null auto_increment,
`pro_id` int(11) not null,
`pro_price` decimal(10,0) default null,
`pro_amount` decimal(10,0) default null,
`valid` int(11) not null default '1',
`type` int(11) default null,
`date` datetime default null,
primary key (`id`)
) engine=innodb auto_increment=5 default charset=utf8;
-- ----------------------------
-- records of product
-- ----------------------------
insert into `product` values ('1', '1001', '30', '9562', '1', '0', '2017-12-21 00:00:00');
insert into `product` values ('2', '1001', '30', '324', '1', '1', '2017-12-21 00:00:00');
insert into `product` values ('3', '1001', '33', '6954', '1', '0', '2017-12-22 00:00:00');
insert into `product` values ('4', '1002', '24', '3654', '1', '0', '2017-12-22 00:00:00');
sql語句:
select
pd.pro_id as 商品編號,
pd.pro_price as 單價,
(ifnull(p1.pro_amount,0) - ifnull(p2.pro_amount,0)) as 銷售總額,
((ifnull(p1.pro_amount,0) - ifnull(p2.pro_amount,0))) / pd.pro_price as 銷售總量,
pd.date as 日期
from
(select distinct pro_id,date,pro_price from product) pd
left join (select pro_id,pro_amount,date from product where type = 0) p1 on p1.pro_id = pd.pro_id and p1.date = pd.date
left join (select pro_id,pro_amount,date from product where type = 1) p2 on p2.pro_id = pd.pro_id and p2.date = pd.date
where (ifnull(p1.pro_amount,0) - ifnull(p2.pro_amount,0)) > 0 and pd.pro_price is not null
order by pd .date desc,pd .pro_id desc
查詢結果:
SQL 從查詢結果裡查詢
有orders表 我想要從從表中查出每天電動車和手機各自的銷售總額。這個需求還是蠻簡單的,只需要根據createtime和product group by就行了。下面是我寫的sql語句 select date format createtime,y m d cr,product,sum price ...
mysql php結果排序 SQL查詢結果排序
公升序排序 使用order by子句時,預設情況下資料是按公升序排列的,故可以用asc關鍵字指點公升序排列,或者不指定,預設就是公升序,顯示效果是一樣的,如下圖 降序排序 當需要查詢結果降序排列時,必須在排序後指定desc關鍵字。如下圖是檢視職員薪水的降序排 公升序排序 使用order by子句時,...
SQL 查詢結果為 XML
原始資料 1.auto模式 selectorderno,createdate,username,address fromwhir order orderinfo forxmlauto,xmlschema 結果 2.raw模式selectorderno,createdate,username,addr...