我是SQL和SQL Server的新手,并且无法理解查询中不同子句的PROCESSING顺序。
我有一个问题:
SELECT DISTINCT TOP(10) name
FROM tblEmployees
ORDER BY birthday;
我了解查询的实际处理顺序是:
FROM
SELECT
ORDER BY
但是,在我看来,DISTINCT
和TOP
等子句依赖于ORDER BY
子句的结果。因此,如果在SELECT
子句之前执行ORDER BY
子句,DISTINCT
和TOP
如何使用ORDER BY子句的结果?
答案 0 :(得分:4)
查询按以下顺序进行逻辑处理
DISTINCT
在ORDER BY
之前处理了 DISTINCT
,因此ORDER BY
不依赖于DISTINCT
。
由于ORDER BY
将会从结果中移除第一个重复项,然后将 rects = groups.selectAll('rect')
.data(function (d) {
return d;
})
.enter()
.append('rect')
.attr('x', function (d) {
return xScale(d.x0);
})
.attr('y', function (d, i) {
return yScale(d.y);
})
.attr('height', function (d) {
return yScale.rangeBand();
})
.attr('width', function (d) {
return xScale(d.x);
})
.attr('class', function (d) {
if(d.month == 'Open/New'){
return 'hm-statusNew';
}else if(d.month == 'In Progress'){
return 'hm-inProgress';
}else{
return 'hm-completed';
}
})
.on('mouseover', function (d) {
var xPos = parseFloat(d3.select(this).attr('x')) / 2 + width / 2;
var yPos = parseFloat(d3.select(this).attr('y')) + yScale.rangeBand() / 2;
d3.select('#tooltip')
.style('left', xPos + 'px')
.style('top', yPos + 'px')
.select('#value')
.text(d.x);
d3.select('#tooltip').classed('hidden', false);
})
.on('mouseout', function () {
d3.select('#tooltip').classed('hidden', true);
})
应用