Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > เราจะใส่เงื่อนไข ในการนับได้มั้ยครับ (ใน case when)



 

เราจะใส่เงื่อนไข ในการนับได้มั้ยครับ (ใน case when)

 



Topic : 123456



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์




เราจะใส่เงื่อนไข ในการนับได้มั้ยครับ (ใน case when)

Code (PHP)
SELECT DISTINCT f43_person.HOSPCODE as รหัส 
,count(DISTINCT f43_person.CID case when f43_specialpp.PPSPECIAL LIKE '1B20%' then f43_specialpp.CID else null end ) as การเคลื่อนไหว
,count(DISTINCT f43_person.CID case when f43_specialpp.PPSPECIAL LIKE '1B21%' then 1 else null end) as กล้ามเนื้อและสติปัญญษ
,count(DISTINCT f43_person.CID case when f43_specialpp.PPSPECIAL LIKE '1B22%' or f43_specialpp.PPSPECIAL LIKE '1B23%' then 1 else null end) as เข้าใจภาษา
,count(DISTINCT f43_person.CID case when f43_specialpp.PPSPECIAL LIKE '1B24%' then 1 else null end) as ช่วยเหลือตัวเองและสังคม
FROM f43_person 
INNER JOIN f43_specialpp on f43_specialpp.CID = f43_person.CID and f43_person.TYPEAREA in (1,3)
WHERE f43_specialpp.DATE_SERV >= '20151001' 
and TIMESTAMPDIFF(MONTH,f43_person.BIRTH,f43_specialpp.DATE_SERV) <= 12  
group BY f43_person.HOSPCODE 


แบบที่ผมเขียนมันเออเร่อน่ะครับ อยากจะให้นับ f43_person.CID แค่ครั้งเดียว ครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2016-06-21 11:06:55 By : sweerawat View : 1175 Reply : 20
 

 

No. 1

Guest


https://www.thaicreate.com/php/forum/123441.html

กระทู้ยังไม่ตก จะตั้งใหม่ทำไม






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-21 11:19:09 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 2



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2016-06-21 11:19:09
รายละเอียดของการตอบ ::
....ขออภัยครับ ช่วยลบกระทู้ข้างล่างให้ด้วยครับ อธิบายไม่เข้าใจ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-21 11:26:44 By : sweerawat
 

 

No. 3

Guest


ที่ไม่มีคนตอบเพราะเข้าไม่เข้าใจว่านายต้องการอะไร

structure ของ table ก็ไม่ให้มา

output ที่ต้องการหน้าตาเป็นยังไงก็ไม่รู้

เราว่านายจะตั้งอีก 5-6 อันแบบนี้ก็ไม่มีใครมาตอบหรอก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-21 11:38:40 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 4



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ลองให้ข้อมูลที่ครบถ้วน เพิ่มเติมตามที่ "ห้ามตอบเกินวันละ 2 กระทู้" แนะนำ บางทีแค่คิวรี่ลอยมามันก็ไม่รู้จะเอาไปทดสอบกับอะไร!!
Go to : Sometimes questions are more important than answers.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-21 11:57:58 By : apisitp
 


 

No. 5



โพสกระทู้ ( 3,748 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Facebook

ผมงง เลยไม่กล้าฟันธงตอบ แต่เอาที่แบบเข้าใจคือคุณต้องการให้ count แล้วออกมาแค่ 1 ใช่ป่าวครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-21 14:11:38 By : Dragons_first
 


 

No. 6



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : Dragons_first เมื่อวันที่ 2016-06-21 14:11:38
รายละเอียดของการตอบ ::
....ใช่ครับ เพราะในผล มันมีคนที่ซ้ำกันอยู่ จะนับคนน่ะครับ ไม่ได้นับครั้ง

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-21 15:28:44 By : sweerawat
 


 

No. 7



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


คนมันซ้ำ group "คน" แล้วนับได้หรือเปล่าครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-21 16:31:16 By : apisitp
 


 

No. 8



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
SELECT 
HOSPCODE as รหัส 
,count(case when PPSPECIAL LIKE '1B20%' then 1 else null end ) as การเคลื่อนไหว
,count(case when PPSPECIAL LIKE '1B21%' then 1 else null end) as กล้ามเนื้อและสติปัญญา
,count(case when PPSPECIAL LIKE '1B22%' or PPSPECIAL LIKE '1B23%' then 1 else null end) as เข้าใจภาษา
,count(case when PPSPECIAL LIKE '1B24%' then 1 else null end) as ช่วยเหลือตัวเองและสังคม
from (
	select p.HOSPCODE, s.PPSPECIAL 
	FROM f43_person p 
	INNER JOIN f43_specialpp s 
		on s.CID = p.CID 
		and TIMESTAMPDIFF(MONTH,p.BIRTH,s.DATE_SERV) <= 12
	WHERE s.DATE_SERV >= '20151001' 
	and p.TYPEAREA in (1,3)
	group by p.HOSPCODE, s.PPSPECIAL
) AS TMP1
group BY HOSPCODE 


ไม่รู้จะใช่อย่างที่ต้องการไหม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-22 00:19:42 By : Chaidhanan
 


 

No. 9



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-06-22 00:19:42
รายละเอียดของการตอบ ::
....ให้นับคนแทนครั้งน่ะครับ แต่แบ่งกรุ้บตาม hospcode เกือบใช่ล่ะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-22 11:55:23 By : sweerawat
 


 

No. 10



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
select hoscode, count(cid) from (
  select hoscode , cid from
  FROM f43_person p
  where exists( select cid from f43_specialpp where cid = p.cid and DATE_SERV >= '20151001')
  group by hoscode, cid
) tmp group by hoscode



ประวัติการแก้ไข
2016-06-22 12:15:13
2016-06-22 12:21:04
2016-06-22 12:22:51
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-22 12:08:55 By : Chaidhanan
 


 

No. 11



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-06-22 12:08:55
รายละเอียดของการตอบ ::
...ไม่เข้าใจครับพี่ ตรงนี้ โค๊ดเต็มๆหรือเอาไปวางตรงใหนครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-22 13:13:30 By : sweerawat
 


 

No. 12



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


ผมก็ไม่เข้าใจเหมือนกัน โค๊ดคุณไม่มีมาให้ดู แล้วผมจะรู้ไหมว่า จะเอาไปวางไว้ตรงไหน
ผมแค่บอกวิธีการคิวรี่ให้เห็นเท่านั้นครับ

คุณก็ลองเอาเองครับ ลองเอาไปคิวรี่ บน เครื่องไม้เครื่องมือ ของคุณดูว่า มันได้ result มายังไง
จะประยุกต์ใช้ตรงไหนยังไงก็ว่ากันไป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-22 13:34:00 By : Chaidhanan
 


 

No. 13



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ตอบความคิดเห็นที่ : 12 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-06-22 13:34:00
รายละเอียดของการตอบ ::
ถูกใจมากครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-23 09:05:20 By : apisitp
 


 

No. 14



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 12 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-06-22 13:34:00
รายละเอียดของการตอบ ::
...อธิบายใหม่ครับ ตามรูปข้างล่างนะครับ


out
ผลลัพธ์ หาจำนวน(cus_id ) ว่ามีเท่าไหร่โดย ถ้า cus_id ซ้ำกันให้เลือกนับcus_id วันที่ล่าสุดเท่านั้น

พิมพ์ในภาพผิดครับ หาจำนวน(cus_id )นะครับ ว่ามีเท่าไหร่ ตามรายการสินค้าที่ขายครับ

Code (PHP)
SELECT table_person.home
,count(case when table_service.product_id = '1' then 1 else null end ) as p1
,count(case when table_service.product_id = '2' then 1 else null end) as p2
,count(case when table_service.product_id = '3' then 1 else null end) as p3 
,count(case when table_service.product_id = '4' then 1 else null end) as p4
FROM table_person 
group BY table_person.home


ผมเขียนแบบนี้ แต่แบบนี้มันจะนับ cus_id ซ้ำกันด้วย อยากให้นับ cus_id เป็น 1 โดยเลือกเอาวันที่มาล่าสุด



ประวัติการแก้ไข
2016-06-23 12:26:30
2016-06-23 12:41:53
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-23 12:23:48 By : sweerawat
 


 

No. 15



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 13 เขียนโดย : apisitp เมื่อวันที่ 2016-06-23 09:05:20
รายละเอียดของการตอบ ::
...รบกวนพี่ๆเก่งๆด้วยนะครับ ขอบคุณมากๆๆ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-23 12:24:30 By : sweerawat
 


 

No. 16



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 14 เขียนโดย : sweerawat เมื่อวันที่ 2016-06-23 12:23:48
รายละเอียดของการตอบ ::
คิวรี่อันนี้ คห 14 มันไม่ได้นับจำนวนคน มันนับจำนวน product_id แยกตามรหัสที่กำหนด และแบ่งตาม home


คำถาม
ผลลัพธ์ หาจำนวน(cus_id ) ว่ามีเท่าไหร่โดย ถ้า cus_id ซ้ำกันให้เลือกนับcus_id วันที่ล่าสุดเท่านั้น

แยกสิ่งที่ต้องการหาตามลำดับ
1 แสดง cus_id, product_id เฉพาะ cus_id วันที่ล่าสุด
1.1 หาวันที่ล่าสุด ของแต่ cus_id product_id ที่ไม่เหมือนกัน
Code (SQL)
select cus_id, product_id , max(date) as maxdate from table_service  group by cus_id, product_id

1.2 เอาresult ที่ได้มา join หา เรคคอร์ด สุดท้าย
Code (SQL)
select s.* from table_service s 
inner join ( 
    คิวรี่จาก 1,1
) as tmp on s.cus_id=tmp.cus_id and s.product_id=tmp.product_id and s.date=tmp.maxdate


2 จาก result ที่ได้ มา คำนวณหา จะนวน cus_id แยก ตามกลุ่ม และ product_id
Code (SQL)
SELECT p.home
,count(case when t.product_id = '1' then 1 else null end) as p1
,count(case when t.product_id = '2' then 1 else null end) as p2
,count(case when t.product_id = '3' then 1 else null end) as p3 
,count(case when t.product_id = '4' then 1 else null end) as p4
FROM table_person p 
inner join (
  คิวรี่จาก 1.2
) as t on p.cus_id=t.cus_id
group BY p.home


ถ้าไม่ใช่ให้ทำ
ในช่องสีเหลือง ลองใส่ จำนวน ที่ควรจะเป็นมาให้ดูหน่อยครับ จากตารางข้อมูลที่มี
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-23 13:27:06 By : Chaidhanan
 


 

No. 17



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 16 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-06-23 13:27:06
รายละเอียดของการตอบ ::
....ขอเอาคิวรี่ มาลองปรับเทสกับฐานจริงก่อนนะครับ ขอบคุณมากๆครับพี่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-23 13:47:37 By : sweerawat
 


 

No. 18



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ตอบความคิดเห็นที่ : 14 เขียนโดย : sweerawat เมื่อวันที่ 2016-06-23 12:23:48
รายละเอียดของการตอบ ::
... ดูจากตารางข้อมูล คุณ sweerawat คิวรี่ข้อมูล เข้าใจหลักการ และผมมั่นใจว่า คุณเก่งกว่าผมมาก ...


เพียงแต่ ถ้าคุณให้ข้อมูล ตาม คห. 14 แต่แรก จะมีคนช่วยคุณได้เยอะกว่าเดิมเท่านั้น

*ข้อคิดครับ : บางครั้งคำถามก็สำคัญมากกว่าคำตอบ "Sometimes questions are more important than answers."

ขอตัวไปเล่นเกมส์ต่อครับ บ๊าย บาย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-23 15:01:10 By : apisitp
 


 

No. 19



โพสกระทู้ ( 211 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 16 เขียนโดย : Chaidhanan เมื่อวันที่ 2016-06-23 13:27:06
รายละเอียดของการตอบ ::
...รบกวนอีกนิดครับพี่ ถ้า ถ้าผมเพิ่มฟิลด์อายุใน table_person แล้วจะให้คำนวณ
คนที่มีอายุเท่านี้ว่ามีกี่คน ผมเพิ่มใน
,count(case when TIMESTAMPDIFF(ํYEAR,p.BIRTH,'20151001') <= 20 then 1 else null end) as count_age

แต่ มันนับผิดเพราะ มันไปเกี่ยวกับเงื่อนไขด้านล่างใช่มั้ยครับ ควรจะเอาลรรทัดนับอายุไปใส่ตรงใหนครับ ขอบคุณครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-27 11:10:35 By : sweerawat
 


 

No. 20



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


เพิ่ม ฟีลด์ อายุ คุณต้องออกแบบความต้องการให้ดีครับ ว่าต้องการอะไร
แบ่งลำดับความสำคัญของสิ่งที่่ต้องการให้ชัดเจน

การเพิ่มอายุ เข้าไป นั่นหมายถึง ลำดับความสำคัญเท่า product_id
ก็ต้องขยับตั้งแต่ 1.1 ไล่ออกมาที่ละชั้น ทำความเข้าใจกับโจทย์ที่ต้องการ กับตัวอย่างให้ดีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-06-27 15:29:24 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เราจะใส่เงื่อนไข ในการนับได้มั้ยครับ (ใน case when)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่