คำถามติดแท็ก gaps-and-islands

19
SQL เพื่อกำหนดวันเข้าใช้งานตามลำดับขั้นต่ำ?
ตารางประวัติผู้ใช้ต่อไปนี้มีหนึ่งระเบียนสำหรับทุกวันที่ผู้ใช้รายหนึ่งเข้าถึงเว็บไซต์ (ในช่วงเวลา UTC 24 ชั่วโมง) มีบันทึกมากมายหลายพันรายการ แต่มีเพียงหนึ่งรายการต่อวันต่อผู้ใช้ หากผู้ใช้ไม่ได้เข้าถึงเว็บไซต์ในวันนั้นจะไม่มีการสร้างบันทึก Id UserId CreationDate ------ ------ ------------ 750997 12 2552-07-07 18: 42: 20.723 750998 15 2552-07-07 18: 42: 20.927 751000 19 2009-07-07 18: 42: 22.283 สิ่งที่ฉันกำลังมองหาคือแบบสอบถาม SQL ในตารางนี้ที่มีประสิทธิภาพที่ดีซึ่งจะบอกฉันว่าผู้ใช้รายใดได้เข้าถึงเว็บไซต์เป็นเวลา (n) วันต่อเนื่องโดยไม่ขาดวัน ในคำอื่น ๆจำนวนผู้ใช้ที่มี (n) ระเบียนในตารางนี้มีลำดับ (วันก่อนหรือวันหลัง) วันที่ ? หากวันใดขาดหายไปจากลำดับลำดับจะเสียและควรเริ่มใหม่อีกครั้งที่ 1; เรากำลังมองหาผู้ใช้ที่มีจำนวนวันต่อเนื่องที่นี่โดยไม่มีช่องว่าง ความคล้ายคลึงใด ๆ ระหว่างข้อความค้นหานี้กับป้าย …

11
จะหาช่องว่างในลำดับเลขใน mysql ได้อย่างไร?
เรามีฐานข้อมูลพร้อมตารางที่มีการนำเข้าค่าจากระบบอื่น มีคอลัมน์เพิ่มอัตโนมัติและไม่มีค่าที่ซ้ำกัน แต่มีค่าที่หายไป ตัวอย่างเช่นการเรียกใช้แบบสอบถามนี้: select count(id) from arrc_vouchers where id between 1 and 100 ควรคืนค่า 100 แต่ส่งกลับ 87 แทน มีคำถามใดบ้างที่ฉันสามารถเรียกใช้ที่จะคืนค่าของตัวเลขที่หายไป ตัวอย่างเช่นอาจมีระเบียนสำหรับ id 1-70 และ 83-100 แต่ไม่มีระเบียนใดที่มี id เป็น 71-82 ฉันต้องการส่งคืน 71, 72, 73 ฯลฯ เป็นไปได้หรือไม่

20
ฉันจะหา“ ช่องว่าง” ในการรันตัวนับด้วย SQL ได้อย่างไร
ฉันต้องการหา "ช่องว่าง" แรกในคอลัมน์ตัวนับในตาราง SQL ตัวอย่างเช่นหากมีค่า 1,2,4 และ 5 ฉันต้องการค้นหา 3 แน่นอนฉันสามารถรับค่าตามลำดับและดำเนินการด้วยตนเองได้ แต่ฉันต้องการทราบว่าจะมีวิธีดำเนินการใน SQL หรือไม่ นอกจากนี้ควรเป็น SQL มาตรฐานที่ทำงานร่วมกับ DBMS ที่แตกต่างกัน

20
รับรายการวันที่ระหว่างวันที่สองวัน
การใช้ฟังก์ชัน mysql มาตรฐานมีวิธีการเขียนแบบสอบถามที่จะส่งคืนรายการวันระหว่างวันที่สองวัน เช่นให้ 2009-01-01 และ 2009-01-13 มันจะส่งคืนตารางคอลัมน์เดียวที่มีค่า: 2009-01-01 2009-01-02 2009-01-03 2009-01-04 2009-01-05 2009-01-06 2009-01-07 2009-01-08 2009-01-09 2009-01-10 2009-01-11 2009-01-12 2009-01-13 แก้ไข: ดูเหมือนว่าฉันยังไม่ชัดเจน ฉันต้องการสร้างรายการนี้ ฉันมีค่าที่เก็บไว้ในฐานข้อมูล (ตามวันที่และเวลา) แต่ต้องการให้รวมในการรวมภายนอกด้านซ้ายไปยังรายการวันที่ตามด้านบน (ฉันคาดว่าค่าว่างจากด้านขวาของการรวมนี้บางวันและจะจัดการสิ่งนี้ ).
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.