mysql - Mencari penyelesaian untuk mengira bilangan kontrak baru
巴扎黑
巴扎黑 2017-05-02 09:26:05
0
5
778

Adegan

Pengguna yang log masuk boleh menyemak bilangan kontrak baharu dalam tempoh masa tertentu pada bila-bila masa

Perhubungan Ahli Jabatan

华东区总经理 
 |--- 华东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
     

Borang Kontrak

id          合同id
name        合同名称
created_at  创建时间
created_by  创建人
updated_at  修改时间
updated_by  修改人

Peraturan pengiraan

【新增合同数】 = 【所有下级的新增合同数】+【本人新增合同数】

Pilihan 1

Pangkalan data ialah mysql, kerana bilangan kontrak atasan ialah jumlah bilangan kontrak semua orang bawahan, jadi kami secara rekursif mendapatkan ID pengguna semua orang bawahan pengguna
dan kemudian gunakan count(*) daripada jadual di mana (dicipta_pada tempoh masa Keadaan) dan dibuat_oleh masuk (semua ID pengguna bawahan, termasuk ID pengguna log masuk semasa)

Masalah: Data adalah tepat, tetapi ia tidak cekap dan memberi kesan kepada prestasi pelayan

Pilihan 2

Gunakan jadual berasingan untuk merekodkan bilangan kontrak baharu bagi setiap pengguna setiap hari, atau mula-mula dapatkan ID semua pengguna bawahan, kemudian gunakan
select sum (inum) daripada user_count di mana (dicipta_pada keadaan tempoh masa)
dan create_by in (semua ID pengguna bawahan, termasuk ID pengguna log masuk semasa)

Masalah: Medan ini mesti diubah suai setiap kali anda menambah, memadam atau memadam kelompok Jika bilangan pengguna bertambah, kemungkinan ralat pengiraan adalah sangat tinggi. Walaupun statistik adalah mudah, datanya tidak tepat

Bantuan

Laman web kami akan mengira penambahan baharu hari ini, penambahan semalam, penambahan minggu ini, penambahan bulan ini, penambahan suku tahun ini, dan penambahan tahun ini Pengguna juga boleh memasukkan tempoh masa mereka sendiri untuk bertanya

Adakah anda mempunyai sebarang cadangan ? Penyelesaian yang boleh menjadikan data tepat dan cekap dari segi statistik?

巴扎黑
巴扎黑

membalas semua(5)
Ty80

Pertimbangkan untuk meletakkan salinan kontrak yang baru ditambah dalam redis dan menjelaskannya sekali sehari.

PHPzhong

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.

阿神

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.

小葫芦

Ini ialah keperluan OLAP biasa dalam medan pangkalan data, dan pandangan terwujud boleh dipertimbangkan.

Untuk rujukan.

Sayangi MongoDB! Selamat mencuba!

大家讲道理

Menulis pemasa akan menyelesaikan masalah, itu sahaja! ! !

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan