已知:各系統和裝置表通過 system_id 關聯([注]邏輯關聯非物理關聯)。求:查詢各系統的裝置的數量,若該系統無資料,「補0」。
對應的 sql 語句和資料
set foreign_key_checks=0;
-- ----------------------------
-- table structure for device
-- ----------------------------
drop
table
ifexists
`device`
;create
table
`device`
(`id`
intnot
null
,`deviceid`
intnot
null
,`device_name`
varchar
(255
)not
null
,`system_id`
intnot
null
,primary
key(
`id`))
engine
=innodb
default
charset
=utf8mb4 collate
=utf8mb4_0900_ai_ci;
-- ----------------------------
-- records of device
-- ----------------------------
insert
into
`device`
values
('1'
,'1'
,'裝置1'
,'1');
insert
into
`device`
values
('2'
,'2'
,'裝置2'
,'3');
insert
into
`device`
values
('3'
,'3'
,'裝置3'
,'4');
insert
into
`device`
values
('4'
,'4'
,'裝置4'
,'3');
insert
into
`device`
values
('5'
,'5'
,'裝置5'
,'3');
-- ----------------------------
-- table structure for d_system
-- ----------------------------
drop
table
ifexists
`d_system`
;create
table
`d_system`
(`system_id`
intnot
null
,`system_name`
varchar
(255
)not
null
,primary
key(
`system_id`))
engine
=innodb
default
charset
=utf8mb4 collate
=utf8mb4_0900_ai_ci;
-- ----------------------------
-- records of d_system
-- ----------------------------
insert
into
`d_system`
values
('1'
,'系統1');
insert
into
`d_system`
values
('2'
,'系統2');
insert
into
`d_system`
values
('3'
,'系統3');
insert
into
`d_system`
values
('4'
,'系統4');
insert
into
`d_system`
values
('5'
,'系統5'
);
select
ds.system_name,
count
(ds.system_id) num
from
d_system ds
left
join
(select
system_id
from
device -- where 限制條件
) d on d.system_id = ds.system_id
-- where 限制條件
group
by ds.system_id
資料統計補全沒有資料的日期
做資料統計時有時某天沒有絲毫資料,從資料庫查出來就斷了幾天,這些資料直接做成折線圖就達不到想要的效果,這時就得對資料庫查出的資料進行一些處理。想要查詢的開始截止時間 string starttime 2020 08 01 00 00 00 string endtime 2020 08 05 23 5...
SQL統計1 12月的資料,沒有資料的月份顯示為0
1.利用臨時表補足資料 hana select a.datayear as datayear,a.datamonth as datamonth,sum datanum as datanum from select year gl lz xktz ny as datayear,month gl lz ...
MySQL按小時查詢資料,沒有的補0
乙個統計介面,前端需要返回兩個陣列,乙個是0 23的小時計數,乙個是各小時對應的統計數。思路 直接使用group by查詢要統計的表,當某個小時統計數為0時,會沒有該小時分組。思考了一下,需要建立輔助表,只有一列小時,再插入0 23共24個小時 create table hours list hou...