Як пабудаваць эфектыўны запыт, які падлічвае розныя атрыбуты ў розных слупках

У мяне ёсць табліца з шэрагам з пэўнымі атрыбутамі ў розных слупках. Калонка A можа быць 1 ці 0. калонка B можа быць ``, нулявы або мець значэнне.

Я хачу, каб падлічыць колькасць радкоў у табліцы, якія маюць слупок А з 1, колькасць радкоў у табліцы, якія маюць Калонка B як `` або нуль, а лік радкоў у калонцы B, якія маюць запіс, не роўнае да «» і не роўная нулю.

Ці можна паставіць усё гэта ў адным запыце ці я павінен напісаць тры розных запытаў?

Я выкарыстоўваю MySQL. Дзякуй.

1

1 адказы

Ваш B ўмова будзе лічыць усе радкі ў любым выпадку, так што вы маглі б зрабіць гэта з дапамогай аднаго сканавання.

SELECT COUNT(CASE WHEN A=1 THEN 'X' END),
       SUM(CASE WHEN B='' OR B IS NULL THEN 1 ELSE 0 END),
       SUM(CASE WHEN B='' OR B IS NULL THEN 0 ELSE 1 END)
FROM YourTable
1
дададзена
Дзякуючы. Проста цікава, калі гэта «X» ў першай радку роўны 1?
дададзена аўтар Hard worker, крыніца
Дзякуй Марцін, я разумею. Ваш запыт працуе.
дададзена аўтар Hard worker, крыніца
@Hardworker - Няма COUNT падлічвае ўсе NOT NULL значэння так што любы адвольны NOT NULL будзе працаваць. Я свядома пазбягаў 1 у тым выпадку, даў няправільнае ўражанне. Для SUM версіі курсу 1 патрабуецца.
дададзена аўтар Martin Smith, крыніца