2017-04-04 6 views
0

私は、数年間ボランティアワーカーセッションのデータベースを持っています。各エントリには、とりわけ、ボランティアの名前、セッションの日付、およびその日の作業時間が含まれています。 (はい、ボランティアは名前だけで保護されていますが、名前は一致しません。残念ながら、私はこれを設定しませんでした)各暦年に最大で1回出現するすべてのボランティアのリストを取得したいと思います。 (AKA "episodic"ボランティア)このクエリはどのように書くのですか?MySQL - 暦年に1回しか働いていないボランティアをすべて一覧表示する方法

+2

いくつかのサンプルテーブルデータと期待される結果(フォーマット済みテキスト)を追加します。現在のクエリの試行も表示してください。 – jarlh

+0

テーブルはどのように定義されていますか、どの列に含まれていますか? –

答えて

0

これはあなたを助けるかもしれない:

SELECT `name`, 
     COUNT(`name`) AS `value_occurrence` 
FROM  `my_table` 
WHERE YEAR(START_DATE) = YEAR(CURDATE() 
GROUP BY `name` 
ORDER BY `value_occurrence` DESC 
LIMIT 1; 

先頭レコードが最も現れボランティアになります。

1
select * from USERS where id in (
select u.id from 
(
    select 
    u.id, count(*) 
    from 
    USERS u 
    where 
    YEAR(date) = YEAR(CURDATE()) 
    group by 
    name 
    Having 
    Count(name) <= 1 
)) 

私はこれをテストできませんでしたが、これはあなたが望むものだと思います。

関連する問題