שליפה לא רצופה

שליפה לא רצופה

אמ'לק - אני מעוניין לקרוא חלק מהנתונים באופן לא רצוף מטבלה על מנת לקבל "מושג".
יצרתי טבלא שנראית בערך כך:
קוד:
CREATE TABLE collectedData 
	(id INTEGER PRIMARY KEY, 
	pointID nvarchar, 
	value double)

הזנתי נתונים:
קוד:
insert into test2 (pointID, value) 
	VALUES 
	('point1',0),	('point2',0),	('point3',0),
	('point1',1),	('point2',1),	('point3',1),
	('point1',2),	('point2',2),	('point3',2),
	('point1',3),	('point2',3),	('point3',3),
	('point1',4),	('point2',4),	('point3',4),
	('point1',5),	('point2',5),	('point3',5),
	('point1',6),	('point2',6),	('point3',6),
	('point1',7),	('point2',7),	('point3',7),
	('point1',8),	('point2',8),	('point3',8),
	('point1',9),	('point2',9),	('point3',9),
	('point1',10),	('point2',10),	('point3',10),
	('point1',11),	('point2',11),	('point3',11),
	('point1',12),	('point2',12),	('point3',12),
	('point1',13),	('point2',13),	('point3',13),
	('point1',14),	('point2',14),	('point3',14),
	('point1',15),	('point2',15),	('point3',15),
	('point1',16),	('point2',16),	('point3',16),
	('point1',17),	('point2',17),	('point3',17),
	('point1',18),	('point2',18),	('point3',18),
	('point1',19),	('point2',19),	('point3',19)
אני מעוניין להגיש שאילתה, שתוצאתה תהיה כך:
קוד:
ID, pointID, value
1, point1, 0
2, point2, 0
3, point3, 0
7, point1, 2
8, point2, 2
9, point3, 2
13, point1, 4
14, point2, 4
15, point3, 4
19, point1, 6
20, point2, 6
21, point3, 6
25, point1, 8
26, point2, 8
27, point3, 8
31, point1, 10
32, point2, 10
33, point3, 10
37, point1, 12
38, point2, 12
39, point3, 12
ז.א. - כל נתון שני של כל pointID בנפרד. (סדר המיון לא משנה ברגע זה).
רעיון לכוון?
 

גרי רשף

New member
Where Value%2=0

כלומר- כל ה-Value הזוגיים.
אם זה לא נכון, נסה לשאול בצורה ברורה יותר..
 
הערכים שהזנתי לvalues היו רק דוגמה

הערכים הם מספרים כלשהם (במקרה בדוגמה הזנתי אותם לפי הסדר, אבל הם עשויים להיות שונים בהחלט אלה מאלה, לא בסדר עולה או בסדר כלשהו). לאחר הזנת נתונים, הID רצוף לפי סדר הזנת הנתונים. הערכים האחרים - לא בהכרח. בקוד הבדיקה אני משתמש בsqlite שלא תומך בrow_number, וכל ה"טריקים" ליצור כזה כרוכים בשאילתה עצמית מסדר שני (לא רעיון טוב כאשר בבסיס הנתונים צפויים להיות כמה מליוני שורות).
&nbsp
הביצועים על שליפה מלאה של הנתונים סבירים (מדדתי כ-450 מילי לשליפה של 4.3 מליון רשומות), אבל להעביר כמות כזו של נתונים לצד הלקוח תהווה אתגר מעניין למי שצריך לכתוב אותו, אז אני מנסה למצוא דרך לצמצם את כמות הנתונים, ולאפשר לו להגיד לי להביא עבור כל הטווח רק חלק מהנתונים עבור כל pointID, ואני מנסה לעשות את זה בשאילתה יחידה. אם לא תהיה ברירה, אבצע מעבר בצד השרת לאחר השאילתה ו"אארוז" את הנתונים שאני רוצה.
&nbsp
 

גרי רשף

New member
אינני מכיר את sqlite

יש עמודת Identity, נכון?
אם כך אפשר לפלטר את כל ערכי ה-identity הזוגיים.
 
קדם כל תודה

אבל פה מתחיל הסיבוך. אם אני שולף את כל ערכי הid הזוגיים, אני עלול להגיע למצב בו יש נקודה עם pointID שאני לא שולף, ונקודה אחרת ששלפתי את כל הנתונים שלה (כולל אלה שלא רציתי).
כדי להדגים - נניח ששלפתי את כל ערכי הID שמתחלקים ב-3 ללא שארית. אקבל את כל הנתונים של point1, ושום נתון על point2 או על point3, כשמה שרציתי הוא כל נתון שלישי של point1, point2, point3.
&nbsp
דרך אגב, בבסיס הנתונים ה"אמיתי" יש גם שדה של timestamp, ולמעשה כשאני רוצה כל נתון N זה מול השדה הזה. השדה הזה "קופץ" לפי נתונים ממערכת אחרת (הוא לא במרווח קבוע, ולpoints שונים יכול להיות timestamp זהה או שונה בדגימות שונות).
&nbsp
 
למעלה