サブクエリを勉強してます。
■やりたいこと
売上の平均以上を達成した社員の名前を抽出したい
■分からないこと(迷っていること)
//売上平均の算出
//"select avg(sale) from sales";
//売上の平均以上を達成したsalesテーブルのレコードを抽出
//select * from sales where sale > (select avg(sale) from sales);
上記まではできました。がsalesのmember_idをもとに売上平均以上の社員名をsql文で
どう書けば良いのかわかりません。
以下のようなsql文を考えましたが、そもそも書き方が間違ってますか?
select * from members where member_id = (select member_id from sales where sale > select avg(sale) from sales);
■前提条件
salesテーブル
1member_id, sale, month 21 , 75 , 4 32 , 200 , 5 43 , 15 , 6 54 , 700 , 5 65 , 672 , 4 76 , 56 , 8 87 , 231 , 9 98 , 459 , 8 109 , 8 , 7 1110 , 120 , 4 12売上合計:2,536 13売上平均:253.6
membersテーブル
1member_id, name 21 , Tanaka 32 , Sato 43 , Suzuki 54 , Tsuchiya 65 , Yamada 76 , Sasaki 87 , Harada 98 , Takahashi 109 , Nishida 1110 , Nakada
ageテーブル
1member_id, age 21 , 24 32 , 25 43 , 47 54 , 55 65 , 39 76 , 26 87 , 43 98 , 33 109 , 24 1110 , 20 12``` --> 13 14```php 15<?php 16 17require_once('functions.php'); 18 19$dbh = connectDb(); 20 21$sql = "select * from members where member_id = (select member_id from sales order by sale desc limit 1)"; 22$stmt = $dbh->prepare($sql); 23$stmt->execute(); 24$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 25//var_dump($rows); 26 27foreach ($rows as $row) { 28 echo "1.最大の売上を出した社員の名前:".$row['name']."<br>"; 29} 30//var_dump($row['name']); 31 32 33// 2.売上の平均以上を達成した社員の名前の算出方法 34// 35 36 37$sql = "select avg(sale) from sales"; 38$stmt = $dbh->prepare($sql); 39$stmt->execute(); 40$avg = $stmt->fetchAll(PDO::FETCH_ASSOC); 41var_dump($avg); 42 43 44echo "2.売上の平均以上を達成した社員の名前:"."<br>"; 45echo "1.30代以下の社員が達成した売上の合計:"."<br>";
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。