Rumah > Soal Jawab > teks badan
登陆用户可以随时查看某个时间段的新增合同数
华东区总经理
|--- 华东1区经理
| |---销售主管11
| | |---销售员111
| | |---销售员112
| |---销售主管12
| |---销售员121
| |---销售员122
|
|
|--- 华东2区经理
|---销售主管21
| |---销售员211
| |---销售员212
|---销售主管22
| |---销售员221
| |---销售员222
|---销售主管23
| |---销售员231
| |---销售员232
华北区总经理
|--- 华北1区经理
| |---销售主管31
| | |---销售员311
| | |---销售员312
| |---销售主管32
| |---销售员321
| |---销售员322
|
|
|--- 华北2区经理
|---销售主管41
| |---销售员411
| |---销售员412
|---销售主管42
| |---销售员421
| |---销售员422
|---销售主管43
| |---销售员431
| |---销售员432
id 合同id
name 合同名称
created_at 创建时间
created_by 创建人
updated_at 修改时间
updated_by 修改人
【新增合同数】 = 【所有下级的新增合同数】+【本人新增合同数】
数据库是mysql,因为上级合同数,是所有下级的合同数之和,所以,我们递归得到了用户所有下级的用户id
然后再用count(*) from 表 where (created_at时间段条件) and created_by in (所有的下级用户id,包含当前登录用户id)
问题:数据是准确的,但是效率低下,对服务器性能也有影响
单独用一个表来记录每个用户每天的新增合同数,还是先得到所有下级用户的id,然后再用
select sum(inum) from user_count where (created_at时间段条件)
and created_by in (所有的下级用户id,包含当前登录用户id)
问题:每次 增加,删除,批量删除,都要修改这个字段,如果用户量增大,计数错误的可能性非常大,虽然统计方便了,但是数据不准确
我们网站要统计今日新增,昨日新增,本周新增,本月新增,本季度新增,本年新增,用户还可以自己输入时间段查询
请问大家有没有什么好的方案,可以让数据既准确,统计起来效率又高的?
PHP中文网2017-05-02 09:28:05
Pertimbangkan untuk meletakkan salinan kontrak yang baru ditambah dalam redis dan menjelaskannya sekali sehari.
PHPz2017-05-02 09:28:05
Pilihan 1 adalah pilihan pilihan Satu-satunya masalah ialah lambat untuk mendapatkan semua kakitangan bawahan secara rekursif. Kemudian mari kita selesaikan masalah ini!
Anggapkan struktur anggaran jadual kakitangan adalah seperti berikut, storan data seperti pokok biasa.
ID, Nama, Id Ibu Bapa
Tambahkan Laluan medan padanya, yang nilainya ialah laluan akses kepada orang itu, seperti -12-45-765-
, dengan 765 ialah ID pengguna semasa, 45 ialah lebih tinggi daripada 765 dan 12 ialah lebih tinggi daripada 45.
Dengan medan ini, mudah untuk menapis semua orang bawahan pemimpin dan dirinya berdasarkan IDnya. select id from employee where path like '%-45-%'
Hanya ingat untuk mengemas kini medan ini apabila mengemas kini gabungan kakitangan pada masa hadapan.
阿神2017-05-02 09:28:05
Jika anda mempunyai jumlah data yang banyak, anda perlu bertanya dan mengiranya setiap kali anda menyemaknya. Ini sangat, sangat menekan, tidak kira penyelesaian yang anda gunakan.
Untuk perkara seperti ini, anda juga boleh melakukan statistik pengiraan penstriman secara langsung. Kira sekeping data sekali, dan tanyakan terus apabila menggunakannya.
Untuk tidak menjejaskan prestasi proses biasa, statistik pengkomputeran penstriman boleh dikendalikan secara tak segerak
Sistem kami telah melakukan statistik yang serupa Anda boleh melihat 90 hari terakhir apabila melihat statistik harian, dan 3 tahun yang lalu apabila melihat statistik bulanan sebelum ini, anda hanya boleh melihatnya mengikut tahun, yang nampaknya serupa dengan keperluan anda
Saya menulis kod kecil untuk statistik pengiraan aliran, yang mengambil masa kurang daripada seminggu.
github.com/panjjo/flysnow Sudah tentu, penulisan kod agak teruk.
高洛峰2017-05-02 09:28:05
Ini ialah keperluan OLAP biasa dalam medan pangkalan data, dan pandangan terwujud boleh dipertimbangkan.
Untuk rujukan.
Sayangi MongoDB! Selamat mencuba!