出典:
免責事項:私が誰かの権利を侵害した場合は、私に連絡してください。削除します。
専門家を歓迎して私にスプレーしてください。
記事のディレクトリ
MySQLでdistinctを使用する方法
テストテーブル:
- 複数の列で操作する
table_3から個別のorderid、foodName、priceを選択します。
個別が複数のフィールドに適用される場合、その適用範囲は次のとおりです。その後のすべてのフィールド、その隣のフィールドだけでなく、distinctはすべてのフィールドの前にのみ配置できます。次のステートメントは間違っています。
table_3からorderid、foodName、個別の価格を選択します。
- DistinctはNULLをフィルタリングしません。つまり、返される結果にはNULL値が含まれます。
619.一度だけ現れる最大の数
タイトル説明
リンク:https://leetcode-cn.com/problems/biggest-single-number
テーブルmy_numbersのnumフィールドには、多くの繰り返し番号を含む多くの番号が含まれています。
SQLクエリを記述して、一度だけ出現した数字の中で最大の数字を見つけることができますか?
±– +
| num |
±– +
| 8 |
| 8 |
| 3 |
| 3 |
| 1 |
| 4 |
| 5 |
| 6 |
上記のサンプルデータの場合、クエリステートメントは次の結果を返す必要があります。
±– +
| num |
±– +
| 6 |
注:
1回しか表示されない数字がない場合は、nullを出力します。
回答
# Write your MySQL query statement below
select max(num) as num from
(
select num from my_numbers group by num having count(num)=1
)as template_table
select
ifnull(
(
select num from
(
select num from my_numbers group by num having count(*)=1 order by num desc
)as template_table
limit 1)
,null) as num;
1076.プロジェクトスタッフII
リンク:https://leetcode-cn.com/problems/project-employees-ii
タイトル説明
表:プロジェクト
±------------±-------- +
|列名|タイプ|
±------------±------- -+
| project_id | int |
| employee_id | int |
±------------±-------- +
主キーは(project_id、employee_id)です。
employee_idは、Employeeテーブルの外部キーです。
表:従業員
±-----------------±-------- +
| 列名| タイプ|
±-----------------±-------- +
| employee_id | int |
| 名前| varchar |
| 経験年数| int |
±-----------------±-------- +
主键是employee_id。
SQLクエリを記述して、従業員が最も多いアイテムをレポートします。
クエリ結果の形式は次のとおりです。
プロジェクトテーブル:
±------------±------------ +
| project_id | employee_id |
±------------±------------ +
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
±------------±------------ +
従業員表:
±------------±-------±----------------- +
| employee_id | 名前| 経験年数|
±------------±-------±----------------- +
| 1 | ハレド| 3 |
| 2 | アリ| 2 |
| 3 | ジョン| 1 |
| 4 | Doe | 2 |
±------------±-------±----------------- +
結果テーブル:
±------------ +
| project_id |
±------------ +
| 1 |
±------------ +
最初のプロジェクトには3人の従業員がいて、2番目のプロジェクトには2人の従業員がいます。
回答
# Write your MySQL query statement below
select project_id
from Project
group by project_id
having count(distinct employee_id) >= all
(
select count(distinct employee_id) from Project group by project_id
)
SELECT PROJECT_ID
FROM PROJECT
GROUP BY 1
HAVING COUNT(*) >= ALL (SELECT COUNT(*)
FROM PROJECT
GROUP BY PROJECT_ID);
178.スコアランキング
リンク:https://leetcode-cn.com/problems/rank-scores
タイトル説明
スコアランキングを達成するためのSQLクエリを記述します。
2つのスコアが同じである場合、2つのスコアのランク(ランク)は同じです。分割後の次のランキングは、次の連続する整数値である必要があることに注意してください。言い換えれば、ランキングの間に「ギャップ」があってはなりません。
±—±------ +
| Id |スコア|
±—±------ +
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
±—±------ +
たとえば、上記のスコアテーブルによると、クエリは次のように返されます(最高スコアから最低スコアへとランク付けされます)。
±------±----- +
|スコア|ランク|
±------±----- +
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
±------±----- +
重要な注意:MySQLソリューションの場合、列名として使用される予約語をエスケープする場合は、次を使用できます。キー単語の前後にアポストロフィを使用します。例えばRank
回答
SELECT SCORE, DENSE_RANK() OVER(ORDER BY SCORE DESC) AS 'RANK'
FROM SCORES;
select a.Score as Score,
(select count(distinct b.Score) from Scores b where b.Score >= a.Score) as "Rank"
from Scores a order by a.Score desc
mysqlにはランク関数はありません!!!!
http://fellowtuts.com/mysql/query-to-obtain-rank-function-in-mysql/を参照してください。mysqlにランク関数を実装する方法