MySQL 常見統計(沒有資料則「補0「)

2021-10-14 04:01:52 字數 2991 閱讀 4743

已知:各系統和裝置表通過 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...