0

这是我的MySQL表结构的一部分:

questionRecID       value   periodMonth     periodYear      practiceID
           16          70            11           2010             475  
           28          33            11           2010             475
           14         226            11           2010             475

Question Rec ID 14 是用于计算百分比的分母。所以,是这样的:

percent = (70 / 226) * 100. 这给了我 2010 年 11 月的 rec ID 16 问题的百分比。

我需要查询整个表,以获取存储的所有年份和所有月份的前 10 个执行实践。php 或 SQL 都适合我。我真的很纠结如何从这个表中获取数据。

4

1 回答 1

0
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table (questionRecID       INT NOT NULL PRIMARY KEY,value   INT NOT NULL,periodMonth     INT NOT NULL, periodYear      INT NOT NULL, practiceID INT NOT NULL);
INSERT INTO my_table VALUES
(16          ,70            ,11           ,2010             ,475  ),
(28          ,33            ,11           ,2010             ,475),
(14         ,226            ,11           ,2010             ,475);

SELECT * FROM my_table;
+---------------+-------+-------------+------------+------------+
| questionRecID | value | periodMonth | periodYear | practiceID |
+---------------+-------+-------------+------------+------------+
|            14 |   226 |          11 |       2010 |        475 |
|            16 |    70 |          11 |       2010 |        475 |
|            28 |    33 |          11 |       2010 |        475 |
+---------------+-------+-------------+------------+------------+

SELECT x.*
     , x.value/y.value pct 
  FROM my_table x 
  JOIN my_table y 
    ON y.practiceid = x.practiceid 
   AND y.questionrecid = 14;
+---------------+-------+-------------+------------+------------+--------+
| questionRecID | value | periodMonth | periodYear | practiceID | pct    |
+---------------+-------+-------------+------------+------------+--------+
|            14 |   226 |          11 |       2010 |        475 | 1.0000 |
|            16 |    70 |          11 |       2010 |        475 | 0.3097 |
|            28 |    33 |          11 |       2010 |        475 | 0.1460 |
+---------------+-------+-------------+------------+------------+--------+
于 2013-03-12T10:41:47.523 回答