あなたのような何かを行うことができます:
SELECT caller_id FROM phone_calls WHERE caller_id != 'Unknown' GROUP BY caller_id;
またはDISTINCTを考える - ほとんどの場合、それが高速です - あなたが持っている場合caller_idパフォーマンス上に作成しインデックスは通常は同じですが、もしDISTINCTは優れていません。あなたが必要な場合:
...ショーだけのユニークな発信者のID ..
多分あなたのケース(やって凝集や似たような)のために、あなたはそれを使用することができませんが、念のため。
SELECT DISTINCT caller_id FROM phone_calls WHERE caller_id != 'Unknown'
;
- コメント
SELECT * FROM callers;
+----+-----------+-----------+
| id | caller_id | call_time |
+----+-----------+-----------+
| 1 | abc | 24 |
| 2 | abc | 16 |
| 3 | xyz | 10 |
| 4 | xyz | 10 |
| 5 | Unknown | 11 |
| 6 | Unknown | 12 |
| 7 | Unknown | 13 |
| 8 | xyz | 1 |
| 9 | abc | 10 |
+----+-----------+-----------+
SELECT caller_id, SUM(call_time) FROM callers
WHERE caller_id != 'Unknown'
GROUP BY caller_id;
+-----------+----------------+
| caller_id | SUM(call_time) |
+-----------+----------------+
| abc | 50 |
| xyz | 21 |
+-----------+----------------+
SELECT caller_id, SUM(call_time) FROM callers
GROUP BY caller_id;
+-----------+----------------+
| caller_id | SUM(call_time) |
+-----------+----------------+
| abc | 50 |
| Unknown | 36 |
| xyz | 21 |
+-----------+----------------+
SELECT caller_id, SUM(call_time) as total_time FROM callers
WHERE caller_id != 'Unknown'
GROUP BY caller_id
UNION
SELECT caller_id, call_time FROM callers
WHERE caller_id = 'Unknown';
+-----------+------------+
| caller_id | total_time |
+-----------+------------+
| abc | 50 |
| xyz | 21 |
| Unknown | 11 |
| Unknown | 12 |
| Unknown | 13 |
+-----------+------------+
SELECT caller_id, SUM(call_time) as total_time FROM callers
GROUP BY caller_id,
(case when caller_id = 'Unknown'
AND id is not null
then id end
);
+-----------+------------+
| caller_id | total_time |
+-----------+------------+
| abc | 50 |
| Unknown | 11 |
| Unknown | 12 |
| Unknown | 13 |
| xyz | 21 |
+-----------+------------+
での議論AFTER EDITはこのためにWHERE文ではありませんか? – MikeVelazco
VladoDemcakの答えは大丈夫です...それはあなたのために働くのですか? – Roberto