【问题标题】:how to use ROW_NUMBER of T-SQL in SQLite with group by query?如何在 SQLite 中将 T-SQL 的 ROW_NUMBER 与 group by 查询一起使用?
【发布时间】:2013-10-18 08:38:23
【问题描述】:

我已经检查过了:How to use ROW_NUMBER in sqlite

但这对我没有帮助。我已经这样查询了,它返回了错误的行索引。查询有什么问题?

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

【问题讨论】:

  • “假行索引”是什么意思?你期待什么,你得到了什么?
  • 我期望 1、2、3,...,但我得到的不是这些值,而是一些随机数。
  • 我添加了SQL Fiddle

标签: sql sqlite


【解决方案1】:

这可以在单个查询中完成,但使用VIEW 会变得更容易:

-- 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;

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 2016-03-15
    相关资源
    最近更新 更多