0

I've already checked this: How to use ROW_NUMBER in sqlite

But it's not helpful for me. I've query like this & it returns me false row index. What's wrong with the query?

SELECT (select count(*) from medicalrecords b where a.id >= b.id ) as cnt,avg(bmi)
FROM MedicalRecords a 
WHERE Date BETWEEN datetime('now', '-1 month') AND datetime('now', 'localtime') 
group by strftime('%W', Date)

SQL Fiddle

Community
  • 1
  • 1
Farhan Ghumra
  • 15,180
  • 6
  • 50
  • 115

1 Answers1

0

This can be done in a single query, but using VIEW will become much easier:

-- Groups (without sequencial):
CREATE VIEW Grp0 AS SELECT DISTINCT STRFTIME('%W', Date) AS Week FROM MedicalRecords WHERE Date BETWEEN DATETIME('NOW', '-1 month') AND DATETIME('now', 'localtime');

-- Groups (with sequencial):
CREATE VIEW Grp AS SELECT (SELECT COUNT() FROM Grp0 AS _ WHERE Week<=Grp0.Week), Week FROM Grp0;

-- Query:
SELECT Week, (SELECT AVG(bmi) FROM MedicalRecords WHERE STRFTIME('%W', Date) = Week)) FROM Grp;
LS_ᴅᴇᴠ
  • 10,823
  • 1
  • 23
  • 46