查询数据库并根据搜索参数为每个位置 return 一个 'total'
Query a database and return a 'total' for each location based on a search parameter
我正在为数据库创建一个 API,我目前正在尝试创建一个搜索端点,该端点采用搜索参数和 return 全部 'days' 和一个该参数的总出现次数。例如。 (列 = 度)(行 = 一年中的天数),如果参数是 30 度,我想 select 30 度列和 return 一天达到 30 度的总次数。比如:星期一:0:,星期二 10,星期三:8,等等
到目前为止,我已经select根据参数编辑了我想要使用的数据,但我无法每天对其进行求和。到目前为止,我的尝试要么是 365 天的列表,要么是所有天数的总和。我知道我必须对 Temp 参数求和,但我不知道该怎么做,所以我最终得到的是每一天的总和。
当前函数:
router.get('/search/:Temp', func(req, res) {
req.temps.from('days').select('weekDay', req.params.Temp)
.then((columns)=> {
res.json({'Search Result': rows)
)
如果我没理解错的话,你的 table 看起来像这样:
Id Date WeekDay Temperature
----------------------------------------
1 2019-05-30 Thursday 25
2 2019-05-29 Wednesday 30
3 2019-05-28 Tuesday 30
4 2019-05-27 Monday 25
5 2019-05-26 Sunday 25
6 2019-05-25 Saturday 26
7 2019-05-24 Friday 27
8 2019-05-23 Thursday 25
9 2019-05-22 Wednesday 25
10 2019-05-21 Tuesday 30
11 2019-05-20 Monday 30
12 2019-05-19 Sunday 25
13 2019-05-18 Saturday 26
14 2019-05-17 Friday 25
15 2019-05-16 Thursday 25
在给定温度的情况下,您希望得到如下所示的结果:
WeekDay Occurences
-----------------------
Friday 1
Monday 1
Sunday 2
Thursday 3
Wednesday 1
你必须使用GROUP BY
。在原始 SQL 中可以这样写:
SELECT
WeekDay
, COUNT(Temperature) AS Occurences
FROM Temperatures
WHERE Temperature = 25
GROUP BY WeekDay
此处的温度为 25。GROUP BY
子句将所有工作日组合在一起。当您将事物组合在一起时,您还必须使用决定行如何组合在一起的聚合函数。在这种情况下,COUNT()
是要使用的聚合函数。
使用 Knex,它应该看起来像这样:
knex
.select('WeekDay', knex.raw('COUNT(Temperature)'))
.from('Temperatures')
.where('Temperature', 25)
.groupBy('WeekDay')
我正在为数据库创建一个 API,我目前正在尝试创建一个搜索端点,该端点采用搜索参数和 return 全部 'days' 和一个该参数的总出现次数。例如。 (列 = 度)(行 = 一年中的天数),如果参数是 30 度,我想 select 30 度列和 return 一天达到 30 度的总次数。比如:星期一:0:,星期二 10,星期三:8,等等
到目前为止,我已经select根据参数编辑了我想要使用的数据,但我无法每天对其进行求和。到目前为止,我的尝试要么是 365 天的列表,要么是所有天数的总和。我知道我必须对 Temp 参数求和,但我不知道该怎么做,所以我最终得到的是每一天的总和。
当前函数:
router.get('/search/:Temp', func(req, res) {
req.temps.from('days').select('weekDay', req.params.Temp)
.then((columns)=> {
res.json({'Search Result': rows)
)
如果我没理解错的话,你的 table 看起来像这样:
Id Date WeekDay Temperature
----------------------------------------
1 2019-05-30 Thursday 25
2 2019-05-29 Wednesday 30
3 2019-05-28 Tuesday 30
4 2019-05-27 Monday 25
5 2019-05-26 Sunday 25
6 2019-05-25 Saturday 26
7 2019-05-24 Friday 27
8 2019-05-23 Thursday 25
9 2019-05-22 Wednesday 25
10 2019-05-21 Tuesday 30
11 2019-05-20 Monday 30
12 2019-05-19 Sunday 25
13 2019-05-18 Saturday 26
14 2019-05-17 Friday 25
15 2019-05-16 Thursday 25
在给定温度的情况下,您希望得到如下所示的结果:
WeekDay Occurences
-----------------------
Friday 1
Monday 1
Sunday 2
Thursday 3
Wednesday 1
你必须使用GROUP BY
。在原始 SQL 中可以这样写:
SELECT
WeekDay
, COUNT(Temperature) AS Occurences
FROM Temperatures
WHERE Temperature = 25
GROUP BY WeekDay
此处的温度为 25。GROUP BY
子句将所有工作日组合在一起。当您将事物组合在一起时,您还必须使用决定行如何组合在一起的聚合函数。在这种情况下,COUNT()
是要使用的聚合函数。
使用 Knex,它应该看起来像这样:
knex
.select('WeekDay', knex.raw('COUNT(Temperature)'))
.from('Temperatures')
.where('Temperature', 25)
.groupBy('WeekDay')