ข้อมูลการเข้าถึงเว็บไซต์ที่ระบุในแบบฟอร์มsession_id, ip, user_agent
และเวลาเลือกปฏิบัติตามเงื่อนไขด้านล่างคุณจะจัดกลุ่มเซสชันเป็นผู้เยี่ยมชมที่ไม่ซ้ำได้อย่างไร
session_id
: เป็นรหัสที่มอบให้แก่ผู้เข้าชมใหม่ทุกคน มันไม่หมดอายุอย่างไรก็ตามหากผู้ใช้ไม่ยอมรับคุกกี้ / ล้างคุกกี้ / เปลี่ยนเบราว์เซอร์ / เปลี่ยนอุปกรณ์เขาจะไม่ถูกจดจำอีกต่อไป
IP
สามารถใช้ร่วมกันระหว่างผู้ใช้ที่แตกต่างกัน (ลองจินตนาการถึงร้านกาแฟ Wi-Fi ฟรีหรือ ISP ของคุณกำหนด IP) และพวกเขามักจะมีอย่างน้อย 2 บ้านและที่ทำงาน
User_agent
เป็นเวอร์ชันของเบราว์เซอร์ + OS ที่อนุญาตให้แยกความแตกต่างระหว่างอุปกรณ์ ตัวอย่างเช่นผู้ใช้มีแนวโน้มที่จะใช้ทั้งโทรศัพท์และแล็ปท็อป แต่ไม่น่าจะใช้ windows + apple laptop ไม่น่าเป็นไปได้ที่รหัสเซสชันเดียวกันจะมีผู้ใช้หลายคน
ข้อมูลอาจดูเป็นซอที่นี่: http://sqlfiddle.com/#!2/c4de40/1
แน่นอนว่าเรากำลังพูดถึงสมมติฐาน แต่มันเกี่ยวกับการเข้าใกล้ความเป็นจริงให้มากที่สุด ตัวอย่างเช่นหากเราพบ ip และ useragent เดียวกันในกรอบเวลาที่ จำกัด ด้วย session_id ที่แตกต่างกันมันจะเป็นข้อสันนิษฐานที่ยุติธรรมว่าเป็นผู้ใช้เดียวกันโดยมีข้อยกเว้นกรณีขอบบางอย่าง
แก้ไข: ภาษาที่แก้ไขปัญหานั้นไม่เกี่ยวข้องกับภาษาส่วนใหญ่เกี่ยวกับตรรกะและไม่ใช้งาน Pseudocode นั้นใช้ได้
แก้ไข: เนื่องจากลักษณะซอช้าคุณสามารถอ่าน / เรียกใช้ mysql:
select session_id, floor(rand()*256*256*256*256) as ip_num , floor(rand()*1000) as user_agent_id
from
(select 1+a.nr+10*b.nr as session_id, ceil(rand()*3) as nr
from
(select 1 as nr union all select 2 union all select 3 union all select 4 union all select 5
union all select 6 union all select 7 union all select 8 union all select 9 union all select 0)a
join
(select 1 as nr union all select 2 union all select 3 union all select 4 union all select 5
union all select 6 union all select 7 union all select 8 union all select 9 union all select 0)b
order by 1
)d
inner join
(select 1 as nr union all select 2 union all select 3 union all select 4 union all select 5
union all select 6 union all select 7 union all select 8 union all select 9 )e
on d.nr>=e.nr