我有一个包含两列的表,其中一列的值可能会丢失。第一列是ID,第二列是value。 我想为唯一ID选择行,这样,如果有多个具有相同ID的行,但是其中一些具有缺失值,则返回具有现有值的其中之一。如果所有ID为ID的行都为空,则返回其中任何一个。
换句话说,只要两行具有相同的ID,它们就应该属于同一组。但是,在每个组中,如果存在,则返回具有“值”的组。
例如, 输入表。
+--------+---------+
| ID | VALUE |
+------------------+
| x | 1 |
| x | 1 |
| y | 2 |
| y | |
| z | |
| z | |
+------------------+
应返回:
+------------+---------+
| ID | VALUE |
+------------+---------+
| x | 1 |
| y | 2 |
| z | |
+------------+---------+
答案 0 :(得分:1)
根据您的描述,您可以只使用format
:
class App extends Component {
state = {
userInput: ""
};
inputChangedHandler = values => {
this.setState({ userInput: values.value });
};
render() {
const { userInput } = this.state;
return (
<div className="App">
<NumberFormat
format={userInput.toString().length < 11 ? "(###) ###-#####" : undefined}
name="phoneNumberInput"
placeholder="Phone Number Here"
onValueChange={this.inputChangedHandler}
value={userInput}
/>
<p>
<strong>Value: </strong>+1{userInput}
</p>
</div>
);
}
}
如果您要添加其他列,请使用max()
:
select id, max(value)
from t
group by id;
答案 1 :(得分:0)
您可以轻松地将查询分为两个查询:
A: 1- find unique row with DISTINCT on (ID,Value) which are not empty VALUE
B: 2- find unique row with DISTINCT on ID which are empty in VALUE and ID not in(A(ID))
A U(B-A)
答案 2 :(得分:0)
您可以在hive / sql中使用 distinct函数
hive> select distinct id,value from <db_name>.<table_name>;
上述查询将在 id,value 列
中返回不同的值hive> select distinct * from <db_name>.<table_name>;
上面的语句用于仅基于所有列返回不同(不同)的值。