我试图计算3
和2018
的年份中2017
每天平均显示的次数setNum
。为此,我尝试使用exNum
和3
之间有区别的ID Year Text setNum ExNum
-------------------------------------------------
1 2018-01-21 apple 1 3
2 2017-08-03 apple 2 5
3 2018-03-02 banana 1 3
4 2018-05-22 apple 1 3
5 2018-12-12 apple 3 6
6 2017-04-13 apple 3 6
和SELECT
2017 = avg(case when Year BETWEEN '2017-01-01' AND '2017-12-31' then 1 else 0 end),
2018 = avg(case when Year BETWEEN '2018-01-01' AND '2018-12-31' then 1 else 0 end)
FROM
exampleTable
WHERE
Text LIKE '%apple%'
。
2017 2018
0 0
我当前要获取的查询是:
Increment
当前输出:
1-3
注意:原始表只有一个文本列1-3
,其值类似于setNum
。也就是说,ExNum
表示 new Vue({
el: '#app',
data: {
data: [{id: 1}, {id: 2}, {id: 3}],
},
methods: {
addNewClass(index) {
this.$refs.element[index].classList.add('custom-class')
}
},
})
为1,而<script src="https://npmcdn.com/vue/dist/vue.js"></script>
<div id="app">
<div v-for="(result, index) in data" :key="index">
<div ref='element' @click='addNewClass(index)' class='custom-container'>
</div>
</div>
为3。
答案 0 :(得分:4)
您决定将数字增量范围存储为文本不是一个好方法,理想情况下,您应该将增量的两点存储在单独的列中。话虽如此,我们可以做一些字符串奥林匹克运动来解决这个问题:
SELECT
YEAR(Year) AS Year,
COUNT(CASE WHEN 3 BETWEEN CAST(LEFT(Increment, CHARINDEX('-', Increment)-1) AS int) AND
CAST(RIGHT(Increment, LEN(Increment) - CHARINDEX('-', Increment)) AS int)
THEN 1 END) AS apple_3_cnt
FROM exampleTable
WHERE
TEXT LIKE '%apple%'
GROUP BY
YEAR(year);
在这里,我按年份进行汇总,然后对苹果的增量范围包含3的每一年进行有条件记录计数。为此,我将增量范围的两端分开,然后进行转换到整数。
编辑:
根据您更新后的表,我们可以尝试一个更简单的查询:
SELECT
YEAR(Year) AS Year,
COUNT(CASE WHEN 3 BETWEEN setNum AND ExNum THEN 1 END) AS apple_3_cnt
FROM exampleTable
WHERE
TEXT LIKE '%apple%'
GROUP BY
YEAR(year);
答案 1 :(得分:1)
尝试以下
SELECT
avg(case when Year BETWEEN '2017-01-01' AND '2017-12-31' then setNum+ExNum end) as 2017
avg(case when Year BETWEEN '2018-01-01' AND '2018-12-31' then setNum+ExNum end) as 2018
FROM
exampleTable
WHERE
Text LIKE '%apple%'
答案 2 :(得分:0)
您的查询很好。唯一的问题是如何以及在何处分配结果。 改用这种语法
SELECT
avg(case when Year BETWEEN '2017-01-01' AND '2017-12-31' then 1 else 0 end) as A2017,
avg(case when Year BETWEEN '2018-01-01' AND '2018-12-31' then 1 else 0 end) as A2018
FROM
exampleTable
WHERE
Text LIKE '%apple%'
请注意,您不能将数字用作变量名。